hdu1873-看病要排队-(结构体优先队列)
Posted shoulinniao
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hdu1873-看病要排队-(结构体优先队列)相关的知识,希望对你有一定的参考价值。
http://acm.hdu.edu.cn/showproblem.php?pid=1873
#include<stdio.h> #include<iostream> #include<algorithm> #include<cstring> #include<math.h> #include<string> #include<map> #include<queue> #include<stack> #include<set> #define ll long long #define inf 0x3f3f3f3f using namespace std; struct patient int id; int val; ; patient p[2005]; bool operator<(patient p1,patient p2) if(p1.val==p2.val) return p1.id>p2.id; return p1.val<p2.val; ///优先级高的排在前面,重载操作符出来效果和自定义函数相反 priority_queue<patient>que1,que2,que3; int n; string s; int a,b; int main() while(cin>>n) while(que1.size()) que1.pop(); while(que2.size()) que2.pop(); while(que3.size()) que3.pop(); int cnt=0; while(n--) cin>>s; if( s[0]==‘I‘ ) cin>>a>>b;///有一个优先级为b的病人要a医生诊治 cnt++; if( a==1 )///丢进a医生得队列 que1.push(cnt,b); if(a==2) que2.push(cnt,b); if(a==3) que3.push(cnt,b); else cin>>a;///医生a诊断了一个病人,问此人编号,即队列出队 patient now; if(a==1) if(que1.size()) now=que1.top(); que1.pop(); cout<<now.id<<endl; else cout<<"EMPTY"<<endl; else if(a==2) if(que2.size()) now=que2.top(); que2.pop(); cout<<now.id<<endl; else cout<<"EMPTY"<<endl; else if(que3.size()) now=que3.top(); que3.pop(); cout<<now.id<<endl; else cout<<"EMPTY"<<endl; return 0;
以上是关于hdu1873-看病要排队-(结构体优先队列)的主要内容,如果未能解决你的问题,请参考以下文章