题干:

看病要排队这个是地球人都知道的常识。 
不过经过细心的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<cstdio>
#include<queue>
#include<cstring>
#include<iostream>
using namespace std;struct Node {int pri;int id;bool operator < (const Node & b) const {if(pri!=b.pri) return pri < b.pri;return id > b.id;}
};
priority_queue<Node> pq[4];
char op[105];int main()
{int n;while(~scanf("%d",&n) ){//初始化一手 for(int i = 0; i<4; i++)while(!pq[i].empty()) pq[i].pop();int id=1;Node tmp;for(int i=0;i<n;i++){scanf("%s",op);if(!strcmp(op,"IN") ) { int a,b;scanf("%d%d",&a,&b);tmp.pri=b;tmp.id=id;id++;pq[a].push(tmp);}else if(!strcmp(op,"OUT") ) {int a;scanf("%d",&a);if(pq[a].empty() ) {printf("EMPTY\n");}else {printf("%d\n",pq[a].top().id);pq[a].pop();}}}}return 0;
}

总结:

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

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

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

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

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

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

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

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

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

  5. hdu 1873 看病要排队

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

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

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

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

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

  8. 杭电1873题 看病要排队

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

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

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

最新文章

  1. Postman for Linux(x86)
  2. 初探swift语言的学习笔记五(线程)
  3. Dapper逆天入门~强类型,动态类型,多映射,多返回值,增删改查+存储过程+事物案例演示...
  4. 前端动画 wow.js 效果
  5. PHP+MySQL 手工注入语句大全 推荐
  6. 嵌入式linux学习
  7. hpml350服务器安装系统,安装HP ML350
  8. 为Autodesk Viewer添加自定义工具条
  9. 如何在SQL Server中实现错误处理
  10. uniapp调用c语言方法,uni-app 入坑指南-web开发
  11. 搞了 2 周性能优化,QPS 终于翻倍了!
  12. html编写在线打字通,HTML5代码打字练习、HTML5案例 - 03
  13. MySQL 事务四大特性和事务隔离级别
  14. 单代号网络图计算例题_单代号网络图的绘制与6个时间参数的计算,一篇全掌握...
  15. SQL SERVER/ROW_NUMBER() OVER (ORDER BY id)高效分页
  16. 西部旅游杂志西部旅游杂志社西部旅游编辑部2022年第19期目录
  17. 《阿里巴巴Java开发手册(正式版)》--安全规约
  18. 如何使用SIGFOX技术连接物联网?
  19. IP MAC捆绑原理及缺陷的讨论
  20. J2EE基础之map集合框架

热门文章

  1. [剑指offer][JAVA]面试题第[34]题[二叉树中和为某一值的路径][回溯]
  2. fir滤波器算法c语言程序,FIR滤波器设计C语言程序
  3. python总结字典集合列表_python 列表,元组,字典,集合,字符串相互转换
  4. C符号之逻辑运算符 左移与右移 自增自减
  5. java类验证和装载顺序_java中类的加载顺序介绍(ClassLoader)
  6. python答疑的作用_不学Python之集中答疑(5)
  7. redis查询所有key命令_想在生产搞事情?那试试这些 Redis 命令
  8. python字符串排序_Python对字符串列表进行排序
  9. linux sd卡 读写速度测试_铠侠(原东芝存储)SD卡,大容量存储时代,高速读写选择...
  10. python3.8怎么打开创建_Python 3.8 新功能大揭秘【新手必学】