看病要排队

Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 10332    Accepted Submission(s): 4353

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

Author

linle

Source

2008浙大研究生复试热身赛(2)——全真模拟

问题链接:HDU1873 看病要排队

问题简述:参见上文。

问题分析:这是一个需求与服务的问题,需要优先队列表示问题,剩下的就是模拟了。

程序说明:三个医生分别对应一个优先队列数组q[]的各个元素,其他都是套路。

题记:(略)

参考链接:(略)

AC的C++语言程序如下:

/* HDU1873 看病要排队 */#include <iostream>
#include <queue>using namespace std;const int N = 3;struct Node {int p;      // 优先级int id;     // 病人ID(序号)friend bool operator <(const Node &a,const Node &b) {return a.p == b.p ? a.id > b.id : a.p < b.p;}
};void solve(int n)
{priority_queue<Node> q[N];string op;int a, b, k;k = 0;for(int i=1; i<=n; i++) {cin >> op;if(op == "IN") {cin >> a >> b;q[a - 1].push({b, ++k});} else if(op == "OUT") {cin >> a;if(q[a - 1].empty())cout << "EMPTY" << endl;else {cout << q[a - 1].top().id << endl;q[a - 1].pop();}}}
}int main()
{int n;while(cin >> n) {solve(n);}return 0;
}
/* HDU1873 看病要排队 */#include <iostream>
#include <queue>using namespace std;const int N = 3;struct _node {int p;      // 优先级int no;     // 序号friend bool operator <(const _node &a,const _node &b) {if(a.p != b.p)return a.p < b.p;elsereturn a.no > b.no;}
};void solve(int n)
{priority_queue<_node> q[N];_node t;string op;int a, b, no;no = 0;for(int i=1; i<=n; i++) {cin >> op;if(op == "IN") {cin >> a >> b;t = {b, ++no};q[a - 1].push(t);} else if(op == "OUT") {cin >> a;if(q[a - 1].empty())cout << "EMPTY" << endl;else {t = q[a - 1].top();q[a - 1].pop();cout << t.no << endl;}}}
}int main()
{int n;while(cin >> n) {solve(n);}return 0;
}

HDU1873 看病要排队【模拟+优先队列】相关推荐

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

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

  2. hdu1873 看病要排队-优先队列

    Problem Description 看病要排队这个是地球人都知道的常识. 不过经过细心的0068的观察,他发现了医院里排队还是有讲究的.0068所去的医院有三个医生(汗,这么少)同时看病.而看病的 ...

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

    题干: 看病要排队这个是地球人都知道的常识.  不过经过细心的0068的观察,他发现了医院里排队还是有讲究的.0068所去的医院有三个医生(汗,这么少)同时看病.而看病的人病情有轻重,所以不能根据简单 ...

  4. hdu1873 看病要排队哦

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

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

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

  6. 看病要排队 (hdu1873,优先队列)

    看病要排队这个是地球人都知道的常识.  不过经过细心的0068的观察,他发现了医院里排队还是有讲究的.0068所去的医院有三个医生(汗,这么少)同时看病.而看病的人病情有轻重,所以不能根据简单的先来先 ...

  7. Java算法_优先队列和PriorityQueue——HDU 1873:看病要排队

    目录 优先队列和PriorityQueue HDU 1873:看病要排队 java.util.Comparator 优先队列和PriorityQueue java.util.PriorityQueue ...

  8. 看病要排队(模拟做法)

    明人不说暗话,直接先上题目(Problem - 1873 )看病要排队这个是地球人都知道的常识. 不过经过细心的0068的观察,他发现了医院里排队还是有讲究的.0068所去的医院有三个医生(汗,这么少 ...

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

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

最新文章

  1. ElementUI el-time-picker-只显示小时、分钟,分并添加范围校验
  2. Creo二次开发--内存清理函数
  3. Linux Shell脚本去掉几类常见文件中的注释
  4. 仓库如何盘点 打印扫描一体PDA盘点机提升库存盘点效率
  5. php的两种复合数据类型是什么意思_2.4PHP复合数据类型:数组和对象
  6. JIL 编译与 AOT 编译
  7. vue eslint报错Expected linebreaks to be ‘LF‘ but found ‘CRLF‘
  8. Packt发布了2018年技能提升报告
  9. Java从零开始(4)——入门项目
  10. Jquery通过ajax加载json,jquery ajax json 异步加载数据
  11. 基于RS485通信的Modbus通信协议
  12. 淘宝淘口令n年前算法
  13. Ffmpeg实例,为视频添加一个循环播放的背景音乐(混声)
  14. smbrun - smbd和外部程序间的接口程序。
  15. 基于原生小程序精仿的猫眼电影(可预览)
  16. 几种基本的数字正则表达式[转]
  17. 5分钟理解边缘概率,联合概率,条件概率,随机事件独立,随机事件依赖
  18. Simulink学习笔记
  19. 淘宝获取商品历史价格信息 API 返回值说明
  20. python 实战(5)python 登录 爬自己脉脉好友数据

热门文章

  1. .NET——NPOI操作excel
  2. 计算机组成原理中EMAR是什么,计算机组成原理复习资料+试题
  3. //变量在scala中没有自增自减的操作
  4. android开发入门配置,Android开发入门——Andoird Studio的安装与配置
  5. qt截图怎样实现橡皮擦_利用QT实现截屏的四种方法
  6. python flask api部署_使用flask开发api——部署flask,使用gunicorn+gevent模式的http server...
  7. surface远程登录桌面字小_office365账号赠送(office桌面版+5Tonedrive)
  8. String, StringBuffer,StringBuilder
  9. Python中expected an indented block
  10. open cv+C++错误及经验总结(三)