题目:
Problem Description
看病要排队这个是地球人都知道的常识。
不过经过细心的0068的观察,他发现了医院里排队还是有讲究的。0068所去的医院有三个医生(汗,这么少)同时看病。而看病的人病情有轻重,所以不能根据简单的先来先服务的原则。所以医院对每种病情规定了10种不同的优先级。级别为10的优先权最高,级别为1的优先权最低。医生在看病时,则会在他的队伍里面选择一个优先权最高的人进行诊治。如果遇到两个优先权一样的病人的话,则选择最早来排队的病人。

现在就请你帮助医院模拟这个看病过程。

Input
输入数据包含多组测试,请处理到文件结束。
每组数据第一行有一个正整数N(0<N<2000)表示发生事件的数目。
接下来有N行分别表示发生的事件。
一共有两种事件:
1:"IN A B",表示有一个拥有优先级B的病人要求医生A诊治。(0<A<=3,0<B<=10)
2:"OUT A",表示医生A进行了一次诊治,诊治完毕后,病人出院。(0<A<=3)

Output
对于每个"OUT A"事件,请在一行里面输出被诊治人的编号ID。如果该事件时无病人需要诊治,则输出"EMPTY"。
诊治人的编号ID的定义为:在一组测试中,"IN A B"事件发生第K次时,进来的病人ID即为K。从1开始编号。

Sample Input

7
IN 1 1
IN 1 2
OUT 1
OUT 2
IN 2 1
OUT 2
OUT 1
2
IN 1 1
OUT 1

Sample Output

2
EMPTY
3
1
1

简单的结构体优先级设置,直接上代码:

#include <iostream>
#include <queue>
#include <vector>
using namespace std;
struct node
{int id;int ill;friend bool operator < (const node &a,const node &b){if(a.ill==b.ill) return a.id>b.id;return a.ill<b.ill;}
}N[1000];
priority_queue<node> doctor1;
priority_queue<node> doctor2;
priority_queue<node> doctor3;
int main()
{int n,t,i,k;string st;while(cin>>n){k=1;for(i=0;i<n;i++){cin>>st;if(st=="IN"){ N[i].id=k++;cin>>t;cin>>N[i].ill;if(t==1) doctor1.push(N[i]);else if(t==2) doctor2.push(N[i]);else if(t==3) doctor3.push(N[i]);}else if(st=="OUT"){cin>>t;if(t==1){if(doctor1.empty()) cout<<"EMPTY"<<endl;else{cout<<doctor1.top().id<<endl;doctor1.pop();}}else if(t==2){if(doctor2.empty()) cout<<"EMPTY"<<endl;else{cout<<doctor2.top().id<<endl;doctor2.pop();}}else if(t==3){if(doctor3.empty()) cout<<"EMPTY"<<endl;else{cout<<doctor3.top().id<<endl;doctor3.pop();}}}}while(!doctor1.empty()) doctor1.pop();while(!doctor2.empty()) doctor2.pop();while(!doctor3.empty()) doctor3.pop();}return 0;
}

HDU 1873 看病要排队(结构体+优先队列)相关推荐

  1. 【HDU 1873 --- 看病要排队】优先队列

    [HDU 1873 --- 看病要排队]优先队列 Description 看病要排队这个是地球人都知道的常识. 不过经过细心的0068的观察,他发现了医院里排队还是有讲究的.0068所去的医院有三个医 ...

  2. HDU 1873 - 看病要排队 ← 优先队列

    [题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=1873 [问题描述] 看病要排队这个是地球人都知道的常识. 不过经过细心的0068的观察,他发现了医 ...

  3. HDU - 1873 看病要排队(优先队列)

    看病要排队 #include<iostream> #include<queue> using namespace std; struct node {int x;//优先级 i ...

  4. hdu 1873 看病要排队

    看病要排队 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submiss ...

  5. hdu 1872(看病要排队)(优先队列)

    看病要排队 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Subm ...

  6. HDU1873 看病要排队【模拟+优先队列】

    看病要排队 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Subm ...

  7. 【优先队列】HDU 1873——看病找医生

    来源:点击打开链接 看路径记录的BFS之前,再看一遍优先队列的用法. 优先队列的排序规则可以用运算符重载的方式完成,通常意义下,应该用friend bool operator <进行重载. #i ...

  8. nyoj754 黑心医生 结构体优先队列

    对队列不懂的 可以看看我转的这篇文章<a target=_blank href="http://blog.csdn.net/su20145104009/article/details/ ...

  9. 杭电1873题 看病要排队

    题目链接~~> 这题是接触优先队列的第二题代码有点... 开始做时一直wa,最后才明白应该把 priority_queue<zha>q1; 等放到循环里面去,... 代码: #inc ...

最新文章

  1. c#_foreach遍历
  2. 博士申请 | 瑞典皇家理工学院分布式计算研究组招收NLP/ML全奖博士生
  3. Elasticsearch原理与调优
  4. 2021牛客多校3 - Kuriyama Mirai and Exclusive Or(差分+倍增)
  5. 为什么使用了索引,查询还是慢?
  6. 剑指offer(20)包含min函数的栈
  7. c语言程序设计 高等教育,[高等教育]c语言程序设计.doc
  8. javascript按中文首字母排序
  9. 【java奇思妙想】使用多线程的思想来实现java网络编程接收和发送的问题
  10. nginx+uwsgi+django
  11. Converter使用及其原理
  12. 3.STC15W408AS单片机GPIO
  13. 不能随便给他人登录微信小程序
  14. mui实现APP中的支付宝支付
  15. 2020/09/10华为发布会
  16. 列表找房(十)03-页面滚动效果控制——WindowScroller组件用法 Scroll属性
  17. 下载苹果官网视频的方式
  18. 如何找国外作者的matlab,如何与外国学者用电子邮件联系(索要论文或者代码)...
  19. 机器学习-支持向量机SVM算法
  20. 年初五,迎财神 | 一张码如何实现多渠道(微信、支付宝、云闪付...)收款

热门文章

  1. Crawler之Scrapy:Python实现scrapy框架爬虫两个网址下载网页内容信息
  2. Linux常用命令 积累
  3. php 数组元素快速去重
  4. UNIX高级环境编程(9)进程控制(Process Control)- fork,vfork,僵尸进程,wait和waitpid...
  5. SuperSocket 1.5 Documentation译文 2 ----- 实现你的AppServer和AppSession
  6. sql getdate() 时间格式设置
  7. Linux SPI总线设备驱动模型详解
  8. 简单数据分布分析及python实现
  9. 450. 删除二叉搜索树中的节点
  10. 通过TA binary查看TA的uuid和stack