我是靠谱客的博主 唠叨魔镜,这篇文章主要介绍UVA540,现在分享给大家,希望可以做个参考。

题目链接(团体队列)
有t个团队的人在排队,当新来一个人时,如果队伍中有这个人的团队,就排到团队的最后一个队友的最后,如果没有就排到队伍的最后。输入以下三个指令:
在这里插入图片描述

对于每个指令,输出对应的编号。
Input:
在这里插入图片描述Output:
在这里插入图片描述
该题包含两个队列,排队的队列和每个团体成员的队列。使用一个队列存储当前排队的团队编号,一个队列存储团队的成员编号。将成员编号所在的团体编号记录,使用map集合记录成员编号对应的团队编号。

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#include<iostream> #include<queue> #include<string> #include<map> const int maxn=1000+100; using namespace std; int main() { int t,n,x,casee=0; while(cin>>t&&t) { cout<<"Scenario #"<<++casee<<endl; map<int,int> team; for(int i=1;i<=t;i++) { cin>>n; while(n--) { cin>>x; team[x]=i;//成员x所在团队i; } } queue<int> que0,que[maxn]; string str; int num; while(cin>>str) { if(str=="ENQUEUE") { cin>>num; int s=team[num]; if(que[s].empty())//只有当团队s中没有成员时,才将团队s进队。每一个团队只进一次 que0.push(s); que[s].push(num); } else if(str=="DEQUEUE") { int num=que0.front(); cout<<que[num].front()<<endl; que[num].pop(); if(que[num].empty())//当该团队num没有成员时,将该团队的编号出队。 que0.pop(); } else if(str=="STOP") break; } cout<<endl; } }

最后

以上就是唠叨魔镜最近收集整理的关于UVA540的全部内容,更多相关UVA540内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(73)

评论列表共有 0 条评论

立即
投稿
返回
顶部