hdu 1873 看病要排队(优先级队列)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1873
题目大意:
三个医生看病,病人排队看病,病人有优先级,优先级高的提前看病,同样的优先级按先后。IN A B : A医生有B病人。OUT A:A医生看完病人。输入看完病的病人是第几个来的。如果当前的医生没有看病人,输出“EMPYT”.
解题思路:
三个医生队列(优先队列:可以自动排序,解决了优先级问题),定义一个病人结构体,记录病人的顺序 key 和优先级priority,如果当前病人看1号医生,则当前病人入1号医生的队列,类推。
输出,如果1号医生输出,则取栈顶元素的key,同时出栈。如果栈顶为空,则输出“EMPTY”.
AC Code:
#include<bits/stdc++.h>
using namespace std;
struct Patient
{
int priority,key;
friend bool operator < (Patient p1,Patient p2)
{
if(p1.priority != p2.priority)
return p1.priority < p2.priority;
else
return p1.key > p2.key;
}
};
int main()
{
int n,k,doctorId;
Patient patient[];
char type[];
while(scanf("%d",&n)!=EOF)
{
priority_queue<Patient> Doctor1;
priority_queue<Patient> Doctor2;
priority_queue<Patient> Doctor3;
k=;
while(n--)
{
scanf("%s",type);
if(strcmp(type,"IN")==)
{
patient[k].key=k;
scanf("%d %d",&doctorId,&patient[k].priority);
if(doctorId==)
Doctor1.push(patient[k]);
else if(doctorId==)
Doctor2.push(patient[k]);
else Doctor3.push(patient[k]);
k++;
}
else if(strcmp(type,"OUT")==)
{
scanf("%d",&doctorId);
if(doctorId==)
if(Doctor1.empty())printf("EMPTY\n");
else printf("%d\n",Doctor1.top().key),Doctor1.pop();
else if(doctorId==)
if(Doctor2.empty())printf("EMPTY\n");
else printf("%d\n",Doctor2.top().key),Doctor2.pop();
else if(Doctor3.empty())printf("EMPTY\n");
else printf("%d\n",Doctor3.top().key),Doctor3.pop();
}
}
}
return ;
}
hdu 1873 看病要排队(优先级队列)的更多相关文章
- 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 ...
- HDU 1873 看病要排队 优先队列
Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s) ...
- hdoj 1873 看病要排队【优先队列】
看病要排队 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submi ...
- 【优先队列】HDU 1873——看病找医生
来源:点击打开链接 看路径记录的BFS之前,再看一遍优先队列的用法. 优先队列的排序规则可以用运算符重载的方式完成,通常意义下,应该用friend bool operator <进行重载. #i ...
- hdu1873 看病要排队【优先队列】
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1873 看病要排队 Time Limit: 3000/1000 MS (Java/Others) ...
- hdu 1872(看病要排队)(优先队列)
看病要排队 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submi ...
- HDU-1873 看病要排队(队列模拟)
看病要排队 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Subm ...
- HDU 6438"Buy and Resell"(贪心+优先级队列)
传送门 •参考资料 [1]:HDU6438(优先队列+思维) •题意 有n个城市,第 i 天你会达到第 i 个城市: 在第 i 个城市中,你可以用 ai 元购买一个物品,或者用 ai 元卖掉一个物品, ...
随机推荐
- 解决Eclipse项目图标上的红色感叹号,红叉
从外部导入了几个jar包发现工程上出现红叉,但展开又没有详细的指明任何错误,可能过如下几步: 1.检查Build Path中的各个依赖jar及library是否有warning的标志,若有,处理之: ...
- jenkins 把包传到远程服务器上
首先我们在 一台服务器上部署svn,maven,jdk,tomcat,nexus,还有Jenkins. 这里我主要记录Jenkins. 首先我们从网上下载Jenkins的包 wget http://m ...
- elasticsearch与mongodb分布式集群环境下数据同步
1.ElasticSearch是什么 ElasticSearch 是一个基于Lucene构建的开源.分布式,RESTful搜索引擎.它的服务是为具有数据库和Web前端的应用程序提供附加的组件(即可搜索 ...
- iOS开发小技巧--计算label的Size的方法总结
计算label的Size方法 sizeWithAttributes:方法 适用于不换行的情况,宽度不受限制的情况 /// 根据指定文本和字体计算尺寸 - (CGSize)sizeWithText:(N ...
- python之旅【第一篇】
python简介 python的起源 追溯Python语言的起源,是从20世纪90年代初由Guido van Rossum,在阿姆斯特丹,开发一个新的脚本解释程序.不知道Guido当初有没有想到,Py ...
- poj1523 求割点 tarjan
SPF Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 7678 Accepted: 3489 Description C ...
- Input checkbox 添加样式背景
<style type="text/css"> .chk_1 { width: 20px; height: 20px; position: absolute; top: ...
- Ext-ajax请求数据
Ext.Ajax.request({ url: webPath+'/news/newsEastmoneyList', method: 'POST', success: function (respon ...
- mysql-查看全局变量设置
show global variables like '%sql_mode%' 全局变量
- selenium+webdriver+python 中警告框的处理方法
在自动化测试过程中,经常会遇到弹出警告框的情况,如图所示: 在 WebDriver 中处理 JavaScript 所生成的 alert.confirm 以及 prompt 是很简单的.具体做法是使用 ...