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

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

解题思路

通过重载小于运算符,使用优先队列按照题意要求的优先级来输出。

AC代码:

#include <iostream>
#include <queue>
#include <string>
#include <cstdio>
using namespace std;struct Node
{int pr,index;
};bool operator<(Node a,Node b)
{if(a.pr!=b.pr)return a.pr<b.pr;elsereturn a.index>b.index;
}int main()
{std::ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);int n;while(cin >> n){priority_queue<Node> q[3];int cnt=0;while(n--){char s[5];cin >> s;if(s[0]=='I'){int id,pr;Node node;cnt++;cin >> id >> pr;node.pr=pr;node.index=cnt;q[id-1].push(node);}else{int id;cin >> id;if(q[id-1].empty())cout << "EMPTY" << endl;elsecout << q[id-1].top().index << endl,q[id-1].pop();}}}return 0;
}

【HDU 1873 --- 看病要排队】优先队列相关推荐

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

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

  2. HDU 1873 看病要排队(结构体+优先队列)

    题目: Problem Description 看病要排队这个是地球人都知道的常识. 不过经过细心的0068的观察,他发现了医院里排队还是有讲究的.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. hdu1873 看病要排队-优先队列

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

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

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

  7. 杭电1873题 看病要排队

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

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

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

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

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

最新文章

  1. UNL(Ubiquitous Navigation Lab)
  2. as3corelib系列教程之一:ArrayUtil类的用法
  3. 技术实践 | 聊聊网易云信的信令网络库实践
  4. QT的QCameraInfo类的使用
  5. opencv光流例程_OpenCV 4.4 发布!新增YOLOv4 和 EfficientDet 推断支持
  6. 物理搬砖问题_人物专访|从“搬砖烧炉工”到MIT物理PhD, 很普通、很坚持、很热爱...
  7. Illustrator 教程,如何在 Illustrator 中创建颜色渐变?
  8. mysql嵌套查询是从外向内执行的吗_MySQL嵌套查询
  9. 数学建模,一位负责编程的小白拿国奖的学习路程。
  10. Python获取对象所占内存大小方法
  11. mouse without borders 一套键鼠控制多台设备
  12. Android中m、mm、mmm、mma、mmma的区别
  13. 在程序中打开系统设置页
  14. < Linux > 守护进程
  15. 台式计算机如何判断电源损坏,台式电脑电源坏了的表现有哪些
  16. 【Python】写了一个简单的照片按EXIF日期保存脚本
  17. php的turn服务器,搭建TurnServer服务器
  18. 软件发展新方向-新技术革命
  19. php获取实时带宽,Golang 获取网卡时时带宽,可用于测速
  20. 基于Hadoop的高校大数据治理融合系统设计与实现

热门文章

  1. 三年经验前端社招——Shopee
  2. python中self.no = no的意思_这部豆瓣评分9.4的古董沙雕剧和Python ...
  3. 为什么互联网巨头们纷纷使用Git而放弃SVN?(内含Git核心命令与原理总结)
  4. Python学习笔记 | 练习1:数字形式转换 I
  5. Windows 安装 box2d-kengz报错解决方案
  6. Chrome插件——油猴脚本的安装与使用
  7. hive中order by详解
  8. 海康威视面试(C++研发岗位)
  9. Julia个人流程演示代码
  10. 《戏说大前端》第一章-键盘上的梦想