hdu1434-优先队列里对字符串排字典序-优先队列模拟

来源:互联网 发布:linux 文件下载 编辑:程序博客网 时间:2024/06/10 18:21

中文题意:
https://vjudge.net/problem/HDU-1434
错的几次有点尴尬。。。。
输出的时候判空一下也挺好。万一卡这里呢。。
(虽然并没有)
说好了左偏树呢。。结果查不到,模板上也没有这种写法。。
就用优先队列瞎搞了。。。

#include <iostream>#include <queue>#include <cstdlib>#include <cstdio>#include <cstring>using namespace std;const int maxn = 10005; //最多节点数struct node{char name[22];int sc;};bool operator<(const node &a,const node &b){  if(a.sc==b.sc)    return strcmp(a.name,b.name)<0;    return a.sc>b.sc;};int main(){   int n;    int m;    int k;    node a1;    while(~scanf("%d%d",&m,&n)){        priority_queue<node>q[maxn];        for(int i=0;i<m;i++){            scanf("%d",&k);            for(int j=0;j<k;j++){                cin>>a1.name;                cin>>a1.sc;                q[i].push(a1);            }            }          string s;          //printf("%s\n",q[0])           int num,num1,num2;            for(int i=0;i<n;i++){                 cin>>s;                if(s=="GETOUT")                {  cin>>num;                   while(!q[num-1].empty()){                   printf("%s\n",q[num-1].top().name);                     q[num-1].pop();}                }                else if(s=="JOIN"){                     cin>>num1>>num2;                     while(!q[num2-1].empty()){                         q[num1-1].push(q[num2-1].top());                          q[num2-1].pop();                     }                }                else if(s=="GETON"){                    cin>>num1>>a1.name>>a1.sc;                    q[num1-1].push(a1);                }            }   }    return 0;}
原创粉丝点击