首发:https://mp.csdn.net/mdeditor/80294426

例题5-6 团体队列(Team Queue,UVa540)

有t个团队的人正在排一个长队。每次新来一个人时,如果他有队友在排队,那么这个

新人会插队到最后一个队友的身后。如果没有任何一个队友排队,则他会排到长队的队尾。

输入每个团队中所有队员的编号,要求支持如下3种指令(前两种指令可以穿插进

行)。

ENQUEUEx:编号为x的人进入长队。

DEQUEUE:长队的队首出队。

STOP:停止模拟。

对于每个DEQUEUE指令,输出出队的人的编号。

Sample Input

2

3 101 102 103

3 201 202 203

ENQUEUE 101

ENQUEUE 201

ENQUEUE 102

ENQUEUE 202

ENQUEUE 103

ENQUEUE 203

DEQUEUE

DEQUEUE

DEQUEUE

DEQUEUE

DEQUEUE

DEQUEUE

STOP

2

5 259001 259002 259003 259004 259005

6 260001 260002 260003 260004 260005 260006

ENQUEUE 259001

ENQUEUE 260001

ENQUEUE 259002

ENQUEUE 259003

ENQUEUE 259004

ENQUEUE 259005

DEQUEUE

DEQUEUE

ENQUEUE 260002

ENQUEUE 260003

DEQUEUE

DEQUEUE

DEQUEUE

DEQUEUE

STOP

0

Sample Output

Scenario #1

101

102

103

201

202

203

Scenario #2

259001

259002

259003

259004

259005

260001

https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&category=835&problem=481&mosmsg=Submission+received+with+ID+21283631

用map来映射每个人与其所在的组,组号码顺序记录

用两个队列存,一个存组的顺序。

另一个是队列数组,存的是没有顺序的组以及里面的人

#include <iostream>
#include <queue>
#include <map>
#include <string>
using namespace std; int main()
{
int T=1;
int n; //几个组
while(cin>>n&&n!=0)
{
map<int,int> group; //每个人对应其所属的组
for(int i=0;i<n;i++)
{
int m;//每组几个
cin>>m;
for(int j=0;j<m;j++)
{
int name; //每人号码
cin>>name;
group[name] = i; //人的号码对应于组名
}
} string str;
queue<int> que;//存组的顺序
queue<int> per[1003];//存所有人的顺序,per[i]是第i组 cout<<"Scenario #"<<T++<<endl;
while(cin>>str&&str!="STOP")
{
//cout<<"???"<<endl;
if(str == "ENQUEUE")
{
int name;
cin>>name;
int qn=group[name];//组名
if(per[qn].empty()) //说明这个组还没有在队列中
que.push(qn); //组名入组队列
per[qn].push(name);
}
else
{
int qn=que.front(); //获取组名
cout<<per[qn].front()<<endl; //输出出队列的
per[qn].pop(); //人出组
if(per[qn].empty())//如果此组空了
que.pop();
}
}
cout<<endl;
}
return 0;
}
//AC at 2018/5/9

uva 540 - Team Queue(插队队列)的更多相关文章

  1. UVA.540 Team Queue (队列)

    UVA.540 Team Queue (队列) 题意分析 有t个团队正在排队,每次来一个新人的时候,他可以插入到他最后一个队友的身后,如果没有他的队友,那么他只能插入到队伍的最后.题目中包含以下操作: ...

  2. UVA 540 Team Queue(模拟+队列)

    题目代号:UVA 540 题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page ...

  3. UVa 540 Team Queue 【STL】

    题意:给出t个团体,这t个团体排在一起,每次新来一个x排队,如果在整个的团体队列中,有x的队友,那么x排在它的队友的后面,如果他没有队友,则排在长队的队尾 求给出的每一个出队命令,输出出队的人的编号 ...

  4. UVA 540 Team Queue

    思路:使用优先队列,按队伍出现的时刻和自身出现的时刻定义优先级,同时记录此时刻队列里是否有自己队伍的人,一开始没注意,wa了两发. #include<map> #include<qu ...

  5. uva 540 (Team Queue UVA - 540)

    又是一道比较复杂的模拟题.题中有两种队列,一种是总队列,从前向后.其他的是各个团体的小队列,因为入队的人如果有队友的话,会优先进入团体队列. 所以我们先设置两个队列和一个map,设置map倒是可以不用 ...

  6. Team Queue (uva540 队列模拟)

    Team Queue Queues and Priority Queues are data structures which are known to most computer scientist ...

  7. ACM学习历程——UVA540 Team Queue(队列,map:Hash)

    Description   Team Queue   Team Queue  Queues and Priority Queues are data structures which are know ...

  8. UVa540 Team Queue(队列queue)

    队列 STL队列定义在头文件<queue>中, 用“ queue<int>s ” 方式定义, 用push()和pop()进行元素的入队和出队操作, front()取队首元素(但 ...

  9. uva 12100 Printer Queue 优先级队列模拟题 数组模拟队列

    题目很简单,给一个队列以及文件的位置,然后一个一个检查,如果第一个是优先级最高的就打印,否则放到队列后面,求所要打印的文件打印需要花费多长时间. 这里我用数组模拟队列实现,考虑到最糟糕的情况,必须把数 ...

随机推荐

  1. IIS10搭建FTP服务

    1.首先是基本搭建 http://jingyan.baidu.com/article/0bc808fc408fa91bd585b94f.html 2.计算机—管理----本地用户和组----本地用户- ...

  2. java:工具类

    Google guava工具类的介绍和使用:https://blog.csdn.net/wwwdc1012/article/details/82228458 Apache Commons 工具类介绍及 ...

  3. 织梦CMS调用文章列表时,怎么显示短时间格式

    问题描述:织梦在上传文章的时候,默认的上传文章的时间格式都是年.月.日.小时.分钟.秒的格式,怎么才能实现仅显示年.月.日的格式呢? 解决方法: [field:pubdate function=&qu ...

  4. ZooKeeper 典型应用场景-负载均衡

    负载均衡(Load Balance)是一种相当常见的计算机网络技术,用来对多个计算机(计算机集群).网络连接.CPU.硬盘驱动器或其他资源进行分配负载,以达到优化资源使用.最大化吞吐率.最小化响应时间 ...

  5. 原文:I don’t want to see another “using namespace xxx;” in a header file ever again

    http://stackoverflow.com/questions/5849457/using-namespace-in-c-headers http://stackoverflow.com/que ...

  6. NO.002-2018.02.07《越人歌》先秦:佚名

    参考之后略有修改,疑问点“不訾诟耻”释义 越人歌原文.翻译及赏析_古诗文网 蒙羞被好兮不訾诟耻_释义_吴江诗词网   越人歌 先秦:佚名 今夕何夕兮,搴舟中流.今晚是怎样的晚上啊河中漫游.搴(qiān ...

  7. Python:一些小知识

    小知识点总结 一.Python2与Python3 的区别 1.Python2中可以加括号输出,也可不加输出     Python3中必须加 2.python2 中有xrange(生成器)也有range ...

  8. poj 2356 抽屉原理

    基本原理: n+1个鸽子放到n个笼子里,至少有一个笼子里有两只及其以上的鸽子.若有n个笼子,kn+1个鸽子,至少有一个笼子里面有k+1个鸽子: 题意:给定N个数,挑出一些数,他们和和是n的整数倍: 分 ...

  9. HDU 1575 Tr A 【矩阵经典2 矩阵快速幂入门】

    任意门:http://acm.hdu.edu.cn/showproblem.php?pid=1575 Tr A Time Limit: 1000/1000 MS (Java/Others)    Me ...

  10. mysql时间日期函数

    now(), current_timestamp(); -- 当前日期时间 current_date(); -- 当前日期 current_time(); -- 当前时间 date('yyyy-mm- ...