hdu1873 看病要排队(结构体优先队列)
看病要排队
Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 5769 Accepted Submission(s): 2369
只是经过细心的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)
诊治人的编号ID的定义为:在一组測试中,"IN A B"事件发生第K次时,进来的病人ID即为K。
从1開始编号。
7
IN 1 1
IN 1 2
OUT 1
OUT 2
IN 2 1
OUT 2
OUT 1
2
IN 1 1
OUT 1
2
EMPTY
3
1
1
pid=1509" target="_blank" style="color:rgb(26,92,200); text-decoration:none">1509
1872pid=1876" target="_blank" style="color:rgb(26,92,200); text-decoration:none">1876
pid=1874" target="_blank" style="color:rgb(26,92,200); text-decoration:none">1874
pid=1873" style="color:rgb(26,92,200); text-decoration:none">Statistic
用队列模拟看病过程就好啦 。
。
。为什么我的眼里有了泪水。。
由于我链表不会。。。
#include <stdio.h>
#include <queue>
using namespace std;
struct node
{
int x,num;
friend bool operator<(node a,node b)//先对病人的优先级排序,假设相等再对编号排序
{
if(a.x<b.x) return true;
if(a.x==b.x&&a.num>b.num) return true;
return false;
}
};
priority_queue<node>s1;//
priority_queue<node>s2;//
priority_queue<node>s3;//哈哈 用了三个。 。。
int main()
{
int n,mark[2005];
char str[10];
while(scanf("%d",&n)!=EOF)
{
while(!s1.empty())
s1.pop();
while(!s2.empty())
s2.pop();
while(!s3.empty())
s3.pop();
int q=0,a,b,t=1;
for(int i=0;i<n;i++)
{
scanf("%s",str);
if(str[0]=='I')//假设IN
{
node temp;
scanf("%d %d",&a,&b);
temp.num=t++,temp.x=b;
if(a==1)
s1.push(temp);
else if(a==2)
s2.push(temp);
else
s3.push(temp);
}
else//假设OUT,用一个mark数组记录一下序号病人,当然,假设队列为空。记录为0
{
node temp;
scanf("%d",&a);
if(a==1)
{
if(!s1.empty())
{
temp=s1.top(),s1.pop();
mark[q++]=temp.num;
}
else
mark[q++]=0;
}
else if(a==2)
{
if(!s2.empty())
{
temp=s2.top(),s2.pop();
mark[q++]=temp.num;
}
else
mark[q++]=0;
}
else
{
if(!s3.empty())
{
temp=s3.top(),s3.pop();
mark[q++]=temp.num;
}
else
mark[q++]=0;
}
}
}
for(int i=0;i<q;i++)//推断mark【i】数值输出
{
if(mark[i]==0)
printf("EMPTY\n");
else
printf("%d\n",mark[i]);
}
}
return 0;
}
hdu1873 看病要排队(结构体优先队列)的更多相关文章
- HDU1873 看病要排队【模拟+优先队列】
看病要排队 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Subm ...
- hdu1873 看病要排队【优先队列】
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1873 看病要排队 Time Limit: 3000/1000 MS (Java/Others) ...
- hdu1873 看病要排队 优先队列
看病要排队 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit Status ...
- 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 ...
- HDU1873 看病要排队 —— 优先队列(STL)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1873 题解: 题目已经说出了解题方法:优先队列.但是之前没有学过优先队列,而且这题还是在现场赛做的.由 ...
- hdu1873-看病要排队-(结构体优先队列)
http://acm.hdu.edu.cn/showproblem.php?pid=1873 #include<stdio.h> #include<iostream> #inc ...
- hdoj 1873 看病要排队【优先队列】
看病要排队 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submi ...
- hdu1837 看病要排队(优先队列)
看病要排队 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submi ...
随机推荐
- Hydraulic Motor Manufacturers - What Is A Cycloidal Hydraulic Motor?
The Hydraulic Motor manufacturers stated that the cycloidal hydraulic motor is fixedly connec ...
- 字典(trie)树--从入门到入土
今天再来认识一个强大的数据结构. 字典树又称单词查找树,Trie树,是一种树形结构,是一种哈希树的变种.典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词 ...
- IDEA中远程Debug调试
一.设置JVM支持远程Debug调式 由于我的应用是springboot, 所以直接使用java -jar的方法将服务启动起来. java -Xdebug -Xrunjdwp:transport=dt ...
- 【URAL 1486】Equal Squares(二维哈希+二分)
Description During a discussion of problems at the Petrozavodsk Training Camp, Vova and Sasha argued ...
- JSP配置即报错以及解决办法(未更新完)
JSP: JAVA Server Page 使用JAVA语言编写的一种在服务器运行的动态页面 JSP = JAVA + HTML JSP 的执行过程 1: 翻译阶段 把JSP源文件翻译成 java ...
- vs2015 添加行件
VS自定义项目模板:[2]创建VSIX项目模板扩展 http://jingyan.baidu.com/article/bad08e1e9b08ee09c851210d.html
- centos7.4下搭建JDK+Tomcat+Nginx+Mysql+redis+Mongodb+maven+Git+Jenkins
先干两件大事!先干两件大事!先干两件大事! 1.关闭selinux [root@mycentos ~]# vi /etc/selinux/config SELINUX=disabled 2.关闭防火墙 ...
- jmeter给cookie设置sessionId避免其他脚本多次登录
1.相关知识: http头部可以设置:浏览器显示内容类型,如content-type:text/html http头部可以存放:浏览器的cookie信息——cookie是对用户身份进行判断的内容 ht ...
- zoj 2722 Head-to-Head Match(两两比赛)
Head-to-Head Match Time Limit: 2 Seconds Memory Limit: 65536 KB Our school is planning to hold ...
- Gym - 100548C The Problem Needs 3D Arrays (最大密度子图)
TK在大多数 Unix平台.Windows平台和Macintosh系统都是预装好的,TKinter 模块是 Tk GUI 套件的标准Python接口.可实现Python的GUI编程. Tkinter模 ...