HOJ 1456 Team Queue(用queue进行模拟)
2012-08-24 16:32
357 查看
这题用的是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
- UVa 540 Team Queue (STL list&queue模拟插队)
- uvaoj 540 Team Queue 队列模拟
- uva540 Team Queue(模拟:队列)
- Team Queue (uva540 队列模拟)
- Team Queue (uva540 队列模拟)
- 2018_2_3_Team Queue_队列_模拟_手撕
- uva 540 Team Queue(队列+模拟)
- UVA540 Team Queue(模拟:队列)
- HDU 1387 Team Queue 队列的模拟
- uva 540 Team Queue (队列模拟)
- POJ 2259 Team Queue(队列模拟)
- poj 2259 Team Queue (模拟)
- HDU 1387 Team Queue (队列模拟)
- POJ 2259 Team Queue【模拟队列】
- 【ThinkingInJava】54、对List操作中本质的部分进行测试还有Queue中的操作测试性能比较
- 使用优先队列PriorityBlockingQueue进行消息调度
- 最新的vue没有dev-server.js文件,如何进行后台数据模拟?
- 【模拟】【环形数组】-UVA-133- The Dole Queue |java实现
- UVA 540 - Team Queue