Team Queue UVA - 540
Posted 啦啦啦
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Team Queue UVA - 540相关的知识,希望对你有一定的参考价值。
题意:有t个团队的人正在排一个长队。每次新来一个人时,如果他有队友在队伍里,那么这个新人会插队到最后一个队友的身后;否则他就排到长队的末尾。
ENQUEUX x: 编号为x人进入长队。
DEQUEUX: 长队的队首出队。
STOP: 停止模拟。
用两个队列,一个是长队,一个是各个团队的队列。
1 #include<algorithm> 2 #include<iostream> 3 #include<cstring> 4 #include<string> 5 #include<cstdio> 6 #include<queue> 7 #include<map> 8 using namespace std; 9 10 const int maxn=1005; 11 12 int main() 13 { int t,T=0; 14 while(scanf("%d",&t)&&t){ 15 map<int,int> text; 16 for(int i=0;i<t;i++){ 17 int n,m; 18 cin>>n; 19 while(n--){ 20 cin>>m; 21 text[m]=i; 22 } 23 } 24 printf("Scenario #%d\\n",++T); 25 queue<int> Q; 26 queue<int> q[maxn]; 27 28 while(true){ 29 char a[10]; 30 scanf("%s",a); 31 if(a[0]==\'S\') break; 32 else{ 33 int n; 34 if(a[0]==\'E\'){ 35 cin>>n; 36 if(q[text[n]].size()==0) Q.push(n); 37 q[text[n]].push(n); 38 39 } 40 else{ 41 n=Q.front(); 42 cout<<q[text[n]].front()<<endl; 43 q[text[n]].pop(); 44 if(q[text[n]].empty()) Q.pop(); //The key point! 45 } 46 } 47 } 48 cout<<endl; 49 } 50 return 0; 51 }
以上是关于Team Queue UVA - 540的主要内容,如果未能解决你的问题,请参考以下文章
UVA540 Team Queue——题解 by hyl天梦