HOJ 1456 Team Queue(用queue进行模拟)
来源:互联网 发布:网络语qcQS 编辑:程序博客网 时间:2024/04/30 05:38
这题用的是queue,还有用了map实现将不同的人分到若干组。queue里的元素还是queue,这样就能实现插队的功能了,直接在特定的queue后面push即可。这里还用了一个bool型的visit数组,用来记录这一个team中是否有人已经在队列里。如果有,直接在对应的queue后面push一个新member。如果没有,说明这个member是他们team里面第一个来排队的,直接把他push在队尾即可。总之,在排队的不是一个人,而一个team。
#include <iostream>#include<cstdio>#include <map>#include<queue>#include<memory.h>using namespace std;int main(){ int t,num,member,caseNum=0; char s[20]; bool visit[1009]; while(scanf("%d",&t) &&t) { map<int,int>team; //把队员的编号101之类的与所在q的编号联起来 queue<int> q[1009],realqueue; //q是realqueue里面排队的成员 for(int i=0;i<t;i++) { scanf("%d",&num); while(num--) { scanf("%d",&member); team[member]=i; } } memset(visit,0,sizeof(visit)); printf("Scenario #%d\n",++caseNum); while(scanf("%s",s),*s!='S') { if(*s=='E') { scanf("%d",&member); q[team[member]].push(member); if(visit[team[member]]==false) { realqueue.push(team[member]); visit[team[member]]=true; } } else { printf("%d\n",q[realqueue.front()].front()); q[realqueue.front()].pop(); if(q[realqueue.front()].empty()) { visit[realqueue.front()]=false; realqueue.pop(); } } } printf("\n"); } return 0;}
- HOJ 1456 Team Queue(用queue进行模拟)
- Hoj 1456 Team Queue
- [HOJ]1456、[POJ]2259:Team queue
- Team Queue (uva540 队列模拟)
- UVa540 Team Queue (queue)
- Queue Team
- Team Queue
- Team Queue
- Team Queue
- Team Queue
- UVa 540 Team Queue (STL list&queue模拟插队)
- uva 540 Team Queue(队列+模拟)
- uva540 Team Queue(模拟:队列)
- uva 540 Team Queue (队列模拟)
- HDU 1387 Team Queue 队列的模拟
- uvaoj 540 Team Queue 队列模拟
- POJ 2259 Team Queue(队列模拟)
- POJ 2259 Team Queue【模拟队列】
- 逆向仙剑5
- ORA-01187: cannot read from file because it failed verification tests ORA-01110: data file 201: '/
- sql的limit用法
- android开发流程
- 威佐夫博弈
- HOJ 1456 Team Queue(用queue进行模拟)
- ios常用的代码片段(snippet)
- mysql的 last_insert_id
- 失业了……
- Git一分钟上手
- radis lua
- 中国人民银行面试题目(经典题目2)
- 为什么5%的技术人员开发效率是其他95%的20倍?
- 苹果推送APNS自己总结