hoj1999-Data Manager(优先队列)
地址:http://acm.hit.edu.cn/hoj/problem/view?id=1999
add :push一个数字
query:输出当前队列最小的数
delete:删除最小的数
完全是优先队列的功能,头文件#include<queue>
优先队列内部具有排序功能,输出优先级高的数字,数字大的为优先级则 priority_queue<int>q
若数字小为优先级则:priority_queue<int, vector<int>, greater<int> >q;
本题就是输出小的
#include <iostream> #include <cstdio> #include <cstring> #include <cstdlib> #include <queue> #include <math.h> #include <stack> #include <algorithm> #include <assert.h> #include <vector> #include<functional> #define LL long long #define inf 0x3f3f3f3f #define PI acos(-1.0) #define M 1000000007 using namespace std; int main() { int t,x; char str[10]; priority_queue<int, vector<int>, greater<int> >q; while(scanf("%d",&t)==1) { while(!q.empty())q.pop(); while(t--) { scanf("%s",str); if(!strcmp(str,"add")) { scanf("%d",&x); q.push(x); } else if(!strcmp(str,"query")) { if(!q.empty()) printf("%d\n",q.top()); } else { if(!q.empty())q.pop(); } } } return 0; }
注意若队列内已经空了就不能再输出和删除了,所以要加上 if(!q.empty())。。。。。。。。。。。。