hdu 1059 优先级队列

来源:互联网 发布:艺术字设计软件下载 编辑:程序博客网 时间:2024/04/30 11:41

裸的优先级队列,参考了一下他人的代码

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1509

原帖地址:http://yomean.blog.163.com/blog/static/189420225201110811454386/?COLLCC=2615871725&COLLCC=2615871724&

#include <iostream>#include <cstdio>#include <cstdlib>#include <cstring>#include <algorithm>#include <cmath>#include<queue>using namespace std;struct mes{    int pri,no,val;//no为mes进入先后编号顺序    char name[20];    bool operator <(const mes t)const    {        if(pri==t.pri) return no > t.no;        else return pri > t.pri;         //从小到大,小的优先级最高    }};priority_queue<mes>Q;/*也可以这样定义,那个帖子的作者就是这样用的struct cmp//用结构体作为比较函数{       bool operator ()(mes a,mes b)       {            if (a.pri != b.pri) return a.pri > b.pri;//这里如果是大于,则得出来的队列是从小到大            else return a.o > b.o;//同上述       }};priority_queue<mes,vector<mes>,cmp> Q;*/int main(){    freopen("in.txt", "r", stdin);    //freopen("out.txt", "w", stdout);    char order[20];    mes a;    int k=0;//记录编号    while(!Q.empty()) Q.pop();    while(cin>>order)    {        if(strcmp(order,"PUT")==0)        {            cin>>a.name>>a.val>>a.pri;            k++; a.no=k;            Q.push(a);        }        else        {            if(Q.empty()) cout<<"EMPTY QUEUE!"<<endl;            else            {                cout<<Q.top().name<<" "<<Q.top().val<<endl;                Q.pop();            }        }    }    return 0;}


原创粉丝点击