hdoj 1873 看病要排队【优先队列】
看病要排队
Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 5795 Accepted Submission(s):
2384
不过经过细心的0068的观察,他发现了医院里排队还是有讲究的。0068所去的医院有三个医生(汗,这么少)同时看病。而看病的人病情有轻重,所以不能根据简单的先来先服务的原则。所以医院对每种病情规定了10种不同的优先级。级别为10的优先权最高,级别为1的优先权最低。医生在看病时,则会在他的队伍里面选择一个优先权最高的人进行诊治。如果遇到两个优先权一样的病人的话,则选择最早来排队的病人。
现在就请你帮助医院模拟这个看病过程。
每组数据第一行有一个正整数N(0<N<2000)表示发生事件的数目。
接下来有N行分别表示发生的事件。
一共有两种事件:
1:"IN
A B",表示有一个拥有优先级B的病人要求医生A诊治。(0<A<=3,0<B<=10)
2:"OUT
A",表示医生A进行了一次诊治,诊治完毕后,病人出院。(0<A<=3)
A"事件,请在一行里面输出被诊治人的编号ID。如果该事件时无病人需要诊治,则输出"EMPTY"。
诊治人的编号ID的定义为:在一组测试中,"IN A
B"事件发生第K次时,进来的病人ID即为K。从1开始编号。
- /*
- * 利用优先队列来将最大的优先权的患者
- * 输出
- * 不太会用优先队列参考了别人代码
- * 还写得不简洁 惭愧
- *
- */
- #include<stdio.h>
- #include<string.h>
- #include<algorithm>
- #include<queue>
- using namespace std;
- struct node1
- {
- int time1;
- int pat1;
- friend bool operator < (node1 a,node1 b)
- {
- if(a.pat1!=b.pat1)
- return a.pat1<b.pat1;
- else
- return a.time1>b.time1;
- }
- };
- int main()
- {
- int n,m,t,k,a;
- char s1[10];
- char str1[5]={"IN"};
- while(scanf("%d",&t)!=EOF)
- {
- priority_queue<node1>q1;//医生1的看病情况
- priority_queue<node1>q2;//医生2
- priority_queue<node1>q3;//医生3
- node1 x1;//定义结构体名
- node1 x2;
- node1 x3;
- k=1;
- while(t--)
- {
- scanf("%s",s1);
- if(s1[0]=='I')
- {
- scanf("%d%d",&n,&m);
- if(n==1)
- {
- x1.time1=k;
- x1.pat1=m;
- q1.push(x1);
- }
- else if(n==2)
- {
- x2.time1=k;
- x2.pat1=m;
- q2.push(x2);
- }
- else if(n==3)
- {
- x3.time1=k;
- x3.pat1=m;
- q3.push(x3);
- }
- k++;
- }
- else
- {
- scanf("%d",&a);
- if(a==1)
- {
- if(q1.empty())
- printf("EMPTY\n");
- else
- {
- x1=q1.top();
- printf("%d\n",x1.time1);
- q1.pop();
- }
- }
- else if(a==2)
- {
- if(q2.empty())
- printf("EMPTY\n");
- else
- {
- x2=q2.top();
- printf("%d\n",x2.time1);
- q2.pop();
- }
- }
- else if(a==3)
- {
- if(q3.empty())
- printf("EMPTY\n");
- else
- {
- x3=q3.top();
- printf("%d\n",x3.time1);
- q3.pop();
- }
- }
- }
- }
- }
- return 0;
- }
hdoj 1873 看病要排队【优先队列】的更多相关文章
- HDU 1873 看病要排队 优先队列
Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s) ...
- hdu 1873 看病要排队
题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=1873 看病要排队 Description 看病要排队这个是地球人都知道的常识.不过经过细心的0068的 ...
- HDU 1873 看病要排队(优先队列)
看病要排队 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submi ...
- hdu1873 看病要排队 优先队列
看病要排队 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit Status ...
- HDUOj 看病要排队 优先队列的使用 题目1873
STL优先队列的具体描写叙述 http://blog.csdn.net/yueloveme/article/details/47106639 题目地址:http://acm.hdu.edu.cn/s ...
- hdu 1873 看病要排队(优先级队列)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1873 题目大意: 三个医生看病,病人排队看病,病人有优先级,优先级高的提前看病,同样的优先级按先后.I ...
- HDU1873 看病要排队 —— 优先队列(STL)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1873 题解: 题目已经说出了解题方法:优先队列.但是之前没有学过优先队列,而且这题还是在现场赛做的.由 ...
- hdu1873 看病要排队【优先队列】
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1873 看病要排队 Time Limit: 3000/1000 MS (Java/Others) ...
- hdu1837 看病要排队(优先队列)
看病要排队 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submi ...
随机推荐
- 构建 shiro struts2 spring3 mybatis 的maven项目
书接上回 构建 struts2 spring3 mybatis 的maven项目 构建 pom.xml 继续在原有框架下 融合shiro ,具体shiro是啥 这里就不解释了,恩 反正功能挺强大的 本 ...
- UEditor富文本编辑框学习
1.首先需要引入CSS.JS <!--富文本编辑框--> <link href="${pageContext.request.contextPath}/css/plugin ...
- Java源代码分析与生成
源代码分析:可使用ANTLRANTLR是开源的语法分析器,可以用来构造自己的语言,或者对现有的语言进行语法分析. JavaParser 对Java代码进行分析 CodeModel 用于生成Java代码 ...
- 【技巧】DataGridView,ListView重新绑定时保持上次滚动位置
(1)DataGridView 今天在项目时遇到一个问题,将DataTable绑定到DataGridView,其中一列为CheckBox列,当我修改该列值时,触发CellValueChanged事件. ...
- 工作流(worfflow)
-- 工作流(Workflow)就是“业务过程的部分或整体在计算机应用环境下的自动化”,它主要解决的是“使在多个参与者之间按照某种预定义的规则传递文档.信息或任务的过程自动进行,从而实现某个预期的业务 ...
- HDU 1166 敌兵布阵 线段树的基本应用——动态区间和问题
题目: http://acm.hdu.edu.cn/showproblem.php?pid=1166 简单题,1A了,这个好像就是传说中的“点树”. 设当前结点表示线段[left, right],编号 ...
- MVC引用CSS文件の正确姿势
你的css文件目录结构: 将路径写入BundleConfig规则中: using System.Web; using System.Web.Optimization; namespace XXXX { ...
- WebService学习整理(一)——客户端三种调用方式整理
1 WebService基础 1.1 作用 1, WebService是两个系统的远程调用,使两个系统进行数据交互,如应用: 天气预报服务.银行ATM取款.使用邮箱账号登录各网站等. 2, ...
- 【转】WPF中的Binding技巧(二)
WPF中的Binding技巧(二) 接上篇, 我们来看一看Elementname,Source,RelativeSource 三种绑定的方式 1.ElementName顾名思义就是根据Ui元素 ...
- ORACLE 定时任务JOB
http://www.cnblogs.com/xclw/archive/2009/12/04/1616945.html