hdu 1872(看病要排队)(优先队列)
看病要排队
Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 8761 Accepted Submission(s): 3680
不过经过细心的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开始编号。
1 //46MS 1584K 787B G++ 2 #include<iostream> 3 #include<algorithm> 4 #include<string.h> 5 #include<queue> 6 using namespace std; 7 8 struct Node{ 9 friend bool operator<(Node n1, Node n2){ 10 if(n1.priority != n2.priority) 11 return n1.priority<n2.priority; 12 else 13 return n1.index>n2.index; 14 } 15 int priority; 16 int index; 17 }; 18 19 int main() 20 { 21 int n, a, b; 22 char op[5]; 23 while(scanf("%d",&n)!=EOF && n){ 24 priority_queue<Node>PQ[4]; 25 int index = 0; 26 while(n--){ 27 scanf("%s", op); 28 if(strcmp(op, "IN")==0){ 29 scanf("%d%d",&a,&b); 30 Node node = {b,++index}; 31 PQ[a].push(node); 32 }else{ 33 scanf("%d",&a); 34 if(PQ[a].empty()){ 35 puts("EMPTY"); 36 }else{ 37 Node node = PQ[a].top(); 38 PQ[a].pop(); 39 printf("%d\n", node.index); 40 } 41 } 42 } 43 } 44 return 0; 45 }
View Code
转载于:https://www.cnblogs.com/GO-NO-1/p/6221390.html
hdu 1872(看病要排队)(优先队列)相关推荐
- HDU 1873 - 看病要排队 ← 优先队列
[题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=1873 [问题描述] 看病要排队这个是地球人都知道的常识. 不过经过细心的0068的观察,他发现了医 ...
- 【HDU 1873 --- 看病要排队】优先队列
[HDU 1873 --- 看病要排队]优先队列 Description 看病要排队这个是地球人都知道的常识. 不过经过细心的0068的观察,他发现了医院里排队还是有讲究的.0068所去的医院有三个医 ...
- HDU 1873 看病要排队(结构体+优先队列)
题目: Problem Description 看病要排队这个是地球人都知道的常识. 不过经过细心的0068的观察,他发现了医院里排队还是有讲究的.0068所去的医院有三个医生(汗,这么少)同时看病. ...
- HDU - 1873 看病要排队(优先队列)
看病要排队 #include<iostream> #include<queue> using namespace std; struct node {int x;//优先级 i ...
- hdu1873 看病要排队-优先队列
Problem Description 看病要排队这个是地球人都知道的常识. 不过经过细心的0068的观察,他发现了医院里排队还是有讲究的.0068所去的医院有三个医生(汗,这么少)同时看病.而看病的 ...
- hdu 1873 看病要排队
看病要排队 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submiss ...
- Java算法_优先队列和PriorityQueue——HDU 1873:看病要排队
目录 优先队列和PriorityQueue HDU 1873:看病要排队 java.util.Comparator 优先队列和PriorityQueue java.util.PriorityQueue ...
- 【HDU - 1873】 看病要排队(优先队列)
题干: 看病要排队这个是地球人都知道的常识. 不过经过细心的0068的观察,他发现了医院里排队还是有讲究的.0068所去的医院有三个医生(汗,这么少)同时看病.而看病的人病情有轻重,所以不能根据简单 ...
- HDU1873 看病要排队【模拟+优先队列】
看病要排队 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Subm ...
最新文章
- 软件测试--利用组合覆盖法设计测试用例
- 001-Spring Cloud Edgware.SR3 升级最新 Finchley.SR1,spring boot 1.5.9.RELEASE 升级2.0.4.RELEASE注意问题点...
- 如何为部署到 SAP BTP 平台上的 Node.js 应用提供Authorization 和 Trust 管理 - 权限管控
- Javascript——入门基础
- 上网课的心得体会1000字_网络学习心得体会 (1000字)
- Spring项目在启动时报Error running 'ProviderC': Cannot start process, the working directory 'E:\ ' does not
- 细说HTTP中POST与GET的区别与联系
- HDOJ-1201 18岁生日
- python 可视化界面 打开excel_python如何将excel数据处理可视化
- 《敏捷迭代开发:管理者指南》—第2章2.3节时间箱迭代开发
- ubuntu需要多大的固态硬盘_揭秘:为什么SSD固态会越用越慢?关键点就在这里,你了解了吗...
- 使用u盘安装windows7、CentOS6.3双系统
- U盘安装Debian 6 amd64版本
- 电脑安装系统安装不上的几个问题(解决)
- VBA实战代码大全-下载
- c语言中内存分配方式
- 【强化学习】多臂老虎机
- Matlab使用图形平滑处理
- php 必须实现方法,php – 错误:类必须声明为抽象或实现其余的方法
- 计算机键盘分为哪几个键区,标准键盘一般分为哪四个键区