首发: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. 【Leetcode】【Easy】Symmetric Tree

    Given a binary tree, check whether it is a mirror of itself (ie, symmetric around its center). For e ...

  2. how find a record import other database.

    question:how find a record import other database. answer: solution one:you user insert into table_na ...

  3. 源码安装mysql5.6.37

    MYSQL 源码安装: 修改参数文件:vi /etc/security/limits.confmysql soft nproc 2047mysql hard nproc 16384mysql soft ...

  4. hdu 6243,6247

    题意:n只狗,n个笼子,每个笼子只能有一只,求不在自己笼子的狗的数量的期望. 分析:概率是相等的,可以直接用方案数代替,k 不在自己的笼子的方案数是 n!- (n-1)!,这样的k有n个,总的方案数n ...

  5. 创建maven项目后缺少jar包下载失败等问题

    transfer.......fail.........等问题 The container 'Maven Dependencies' references non existing library ' ...

  6. javascript ActiveXObject FileSystemObject 对象,创建、复制、删除、读取文件等

    Javascript是网页制作中离不开的脚本语言,依靠它,一个网页的内容才生动活泼.富有朝气.但也许你还没有发现并应用它的一些更高级的功能吧?比如,对文件和文件夹进行读.写和删除,就象在VB.VC等高 ...

  7. 转载:C/C++ typedef用法

    原文链接:http://www.cnblogs.com/ggjucheng/archive/2011/12/27/2303238.html 引言 typedef 声明,简称 typedef,为现有类型 ...

  8. AngularJS 表格(带有CSS样式)

    <!DOCTYPE html><html><head><meta http-equiv="Content-Type" content=&q ...

  9. [HP-UNIX]bdf命令总结

    (1)bdf命令的效果 lijiaman$[/home/oracle]bdf Filesystem kbytes used avail %used Mounted on /dev/vg00/lvol3 ...

  10. RL 编、解码(EncodedString、DecodedString) - iOS

    开发中对文本传输或二进制传输,都需要将传输的对象进行二进制字节的转化操作,所以无异于编.解码便会经常用到的操作; 当然除了这种方式之外,还有一种常用的 Base64,此文中不具体细谈, Base64 ...