标签:
题解:优先队列,写的时候运算符重载一直出问题,还是不懂。而且刚开始没有加idx这个成员,就一直WA,看了看题目也没发现什么诡异的地方,最后看了几个题解,加上了idx就AC了,也不知道是为什么。
#include <cstdio> #include <iostream> #include <string> #include <sstream> #include <cstring> #include <stack> #include <queue> #include <algorithm> #include <cmath> #include <map> #define PI acos(-1.0) #define ms(a) memset(a,0,sizeof(a)) #define msp memset(mp,0,sizeof(mp)) #define msv memset(vis,0,sizeof(vis)) using namespace std; //#define LOCAL struct task { char name[50]; int value,pri,idx; friend bool operator < (task a,task b) { if(a.pri==b.pri) { return b.idx<a.idx; } return b.pri<a.pri; } } t; int main() { #ifdef LOCAL freopen("in.txt", "r", stdin); #endif // LOCAL ios::sync_with_stdio(false); priority_queue<task> q; //while(!q.empty())q.pop(); char com[5]; int k=0; while(cin>>com) { if(com[0]==‘G‘) { if(q.empty())printf("EMPTY QUEUE!\n"); else printf("%s %d\n",q.top().name,q.top().value),q.pop(); } else { cin>>t.name>>t.value>>t.pri; t.idx=++k; q.push(t); } } return 0; }
HDU 1509 Windows Message Queue
标签:
原文地址:http://www.cnblogs.com/gpsx/p/5185682.html