HDU 2529 Queuing at the doctors 优先队列+模拟
来源:互联网 发布:域名劫持会出现什么 编辑:程序博客网 时间:2024/05/24 02:38
传送门:HDU2529
题意:某公司要求每个员工都必须到当地的医院体检,并给每个员工安排了体检的顺序。为了节约等待时间,员工们被要求分时段去体检,但排队仍然是必不可少的。因此,公司制定了下面几条规定:
员工的编号从1到n。
员工在规定的时间点上一定准时到达医院开始体检。
员工有自己的体检顺序,并且一定按顺序来体检,直到体检完才离开医院。
当有多个员工在同一个时刻到同一个医生那体检时,编号小的优先,其他人按到达的先后顺序和编号大小排队等待。
已经知道每个医生在每单位1的时间内可以检查一个员工,给定所有员工的体检时间和体检顺序,请计算一下最后一个员工离开医院的时间。
一共有N(1 ≤ N ≤ 1000)个员工,M(1 ≤ M ≤ 1000)个医生,所有人总的检查次数不超过10000000
思路:用一个优先队列数组去模拟每一个医生的排队状况,用队列数组去记录每个人的检查顺序,然后按时间递增顺序进行模拟直到优先队列为空。
代码:
#include<stdio.h>#include<iostream>#include<string.h>#include<math.h>#include<algorithm>#include<queue>#include<stack>#include<set>#include<vector>#include<map>#define ll long long#define pi acos(-1)#define inf 0x3f3f3f3f#define lson l,mid,rt<<1#define rson mid+1,r,rt<<1|1using namespace std;typedef pair<int,int>P;const int MAXN=1010;struct node{int id,t;friend bool operator <(node a,node b){if(a.t==b.t)return a.id>b.id;return a.t>b.t;}};priority_queue<node>Q[MAXN];queue<int>q[MAXN];int n,m;int solve(){bool flag=1;int ans=0;//模拟时间增长node t;while(flag){flag=0;for(int i=1;i<=m;i++){if(!Q[i].empty()){flag=1;t=Q[i].top();if(t.t>ans)continue;//时间到了才能出队Q[i].pop();t.t=ans+1;if(!q[t.id].empty()){Q[q[t.id].front()].push(t);q[t.id].pop(); }}}ans++;}return ans-1;}int main(){int t,num,x;node a;scanf("%d",&t);while(t--){scanf("%d%d",&n,&m);for(int i=1;i<=n;i++) {scanf("%d%d",&a.t,&num);while(num--){scanf("%d",&x);q[i].push(x);}a.id=i;Q[q[i].front()].push(a);q[i].pop();}printf("%d\n",solve());} return 0;}
0 0
- HDU 2529 Queuing at the doctors 优先队列+模拟
- UVA 10588 - Queuing at the doctors(优先队列)
- uva 10588 - Queuing at the doctors(优先队列)
- UVA10588 - Queuing at the doctors(优先队列)
- UVA - 10588 Queuing at the doctors (队列)
- Queuing at the doctors
- UVA 10588—— Queuing at the doctors
- HDU 5437--优先队列模拟
- HDU-5437-模拟-优先队列
- HDU 6136 模拟 + 优先队列
- HDU 6136 优先队列 模拟
- hdu 6136 模拟+优先队列
- hdu 6168 模拟+优先队列
- hdu 5437 优先队列 模拟
- Hdu 1434 幸福列车【优先队列模拟】
- 模拟 优先队列(hdu 5437)
- hdu Problem-1896(优先队列+模拟)
- HDU 6180 Schedule【优先队列+模拟】
- 项目管理过程组与知识领域
- javaMail java邮件发送
- KB奇遇记(7):不靠谱的项目实施计划
- windows无法访问 请检查名称的拼写… 错误代码:0x80004005和0x80070035和 0x800704cf
- Tomcat 安装SSL证书
- HDU 2529 Queuing at the doctors 优先队列+模拟
- 数据库的存储过程
- HTTP认证机制
- TensorFlow on a GTX 1080
- 面向对象的四大特性
- Android开发艺术探索读书笔记(二)-跨进程通信
- Spring的refresh()方法调用过程
- 坚持做某件事情
- 微信小程序的文件结构 —— 微信小程序教程系列(1)