算法习题---5.6团体队列(Uva540)
一:题目
有t个队伍的人正在排队,每次新来一个人,如果他有队友在排队,那他可以插队,直接排到他的队伍的末尾。如果没有队伍在前面,那么他直接排在长队的末尾
ENQUEUE x 将编号x的队员入队
DEQUEUE 将队列首个人员出队
STOP 停止模拟
对于每一个DEQUEUE操作,都要将出队的人的编号输出
(一)样例输入
ENQUEUE
ENQUEUE
ENQUEUE
ENQUEUE
ENQUEUE
ENQUEUE
DEQUEUE
DEQUEUE
DEQUEUE
DEQUEUE
DEQUEUE
DEQUEUE
STOP ENQUEUE
ENQUEUE
ENQUEUE
ENQUEUE
ENQUEUE
ENQUEUE
DEQUEUE
DEQUEUE
ENQUEUE
ENQUEUE
DEQUEUE
DEQUEUE
DEQUEUE
DEQUEUE
STOP
(二)样例输出
Scenario # Scenario #
二:代码实现
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <map>
#include <string>
#include <queue> using namespace std; #define MAX 1000 //队列数 int main()
{
freopen("data5_6.in", "r", stdin);
freopen("data5_6.out", "w", stdout); int num,p_n,p_m,count=;
string cmd; while ((cin >> num)&&num!=)
{
cout << "Scenario #" << count++ << endl; //输出信息
map<int, int> p_t; //全部人员信息 队员和队号 //实时排队信息
queue<int> t_num; //按顺序保存当前队列中的队列号
queue<int> p_num[MAX]; //用于保存当前在排队的各个队伍中的人员编号 for (int i = ; i <= num; i++) //获取队列信息
{
cin >> p_n;
for (int j = ; j <= p_n; j++)
{
cin >> p_m;
p_t.insert(pair<int, int>(p_m,i-));
}
} while ((cin >> cmd)&&cmd!="STOP") //开始进行操作
{
if (cmd[]=='E') //入队
{
cin >> p_m; //获取队员编号
p_n = p_t[p_m]; //获取队列编号 if (p_num[p_n].size() == ) //如果当前排队中没有该队伍
{
t_num.push(p_n); //将队号一块插入
p_num[p_n].push(p_m);
}
else //如果当前排队中有该队伍,则直接插入到对应队列中
p_num[p_n].push(p_m);
}
else if (cmd[] == 'D') //出队
{ p_n = t_num.front(); //获取第一个队列号,和该队列中的第一个队员
p_m = p_num[p_n].front();
p_num[p_n].pop(); //将该队员出队 cout << p_m << endl; //输出队员编号 if (p_num[p_n].size() == ) //判断是否是自己队伍中的最后一个人,是的话,将队伍号出队
t_num.pop();
}
} cout << endl; //输出信息 空行
} freopen("CON", "r", stdin);
freopen("CON", "w", stdout);
return ;
}
算法习题---5.6团体队列(Uva540)的更多相关文章
- 团体队列UVA540 Team Queue(队列简单用法)
题目背景 队列和优先级队列是大多数计算机科学家都知道的数据结构.但是团队队列却不被人熟知,尽管在生活中经常出现.比如,午餐时间的食堂门口的队列就是一个团队队列.在一个团队队列中,每个元素属于一个团队. ...
- 团体队列 UVA540 Team Queue
题目描述 有t个团队的人正在排一个长队.每次新来一个人时,如果他有队友在排队,那么新人会插队到最后一个队友的身后.如果没有任何一个队友排队,则他会被排到长队的队尾. 输入每个团队中所有队员的编号,要求 ...
- UVa 540 (团体队列) Team Queue
题意: 每个人都属于一个团体,在排队的时候,如果他所在的团体有人在队伍中,则他会站到这个团体的最后.否则站到整个队伍的队尾. 输出每次出队的人的编号. 分析: 容易看出,长队中,在同一个团体的人是排在 ...
- 【算法习题】数组中任意2个(3个)数的和为sum的组合
题1.给定一个int数组,一个数sum,求数组中和为sum的任意2个数的组合 @Test public void test_find2() { int[] arr = { -1, 0, 2, 3, 4 ...
- 5_6 团体队列(UVa540)<queue与STL其他容器的综合运用>
先给出T个团体,并给出每个团体有多少人和每个人的编号,然后所有团体一起排队,排成一条大队列,排队的原则是,一个成员加入,如果这个成员所在的团体已经有人在排队了,那么他就加到他所在团体的最后面,而不是整 ...
- 算法习题---5-7打印队列(UVa12100)
一:题目 有一个打印机,有一些任务在排着队打印,每个任务都有优先级.打印时,每次取出队列第一个任务,如果它的优先级不是当前队列中最高的,就会被放到队尾,否则就打印出来.输出初始队列的第m个任务的打印时 ...
- 团体队列(UVa540)
题目具体描述见:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_prob ...
- Dijkstra算法优先队列实现与Bellman_Ford队列实现的理解
/* Dijkstra算法用优先队列来实现,实现了每一条边最多遍历一次. 要知道,我们从队列头部找到的都是到 已经"建好树"的最短距离以及该节点编号, 并由该节点去更新 树根 到其 ...
- JavaScript中的算法之美——栈、队列、表
序 最近花了比较多的时间来学习前端的知识,在这个期间也看到了很多的优秀的文章,其中Aaron可能在这个算法方面算是我的启蒙,在此衷心感谢Aaron的付出和奉献,同时自己也会坚定的走前人这种无私奉献的分 ...
随机推荐
- 《你们都是魔鬼吗》实验十二 团队作业八:Alpha冲刺
<你们都是魔鬼吗>第八次团队作业:Alpha冲刺 项目 内容 这个作业属于哪个课程 任课教师博客主页链接 这个作业的要求在哪里 作业链接地址 团队名称 你们都是魔鬼吗 作业学习目标 软件测 ...
- 创建型模式(二) 工厂方法模式(Factory Method)
一.动机(Motivation) 在软件系统创建过程中,经常面临着"某个对象"的创建工作:由于需求的变化,这个对象(的具体实现)经常面临着剧烈的变化,但是它却拥有比较稳定的接口.如 ...
- c语言实现整数转换为字符串——不考虑负数
#include <stdio.h> #include <string.h> #define MAX_LEN 16 #define ESP 1e-5 typedef int i ...
- commons-dbutils工具栏的编写
db.properties driverClass=com.mysql.jdbc.Driver url=jdbc:mysql://localhost:3306/test_db?useUnicode=t ...
- C++数组排序泛型算法
//数组排序泛型算法 #include <vector> #include <iostream> #include <algorithm> //内置泛型算法头文件 ...
- Linux中三种SCSI target的介绍之STGT
版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/scaleqiao/article/deta ...
- mongoDB线上数据库连接报错记录
报错信息提示:无法在第一次连接时连接到服务器 别的一切正常,经过查询得知,是因为如果电脑没设定固定IP,并且重启情况下可能会导致IP地址更改. 解决方法: 将本机ip地址添加到cluster的白名单即 ...
- Unity2017 熊猫跑酷
1.背景 随着移动互联网的快速发展,现在的人们对手机的依赖程度越来越大,以至于为于手机用户量身定做的手机游戏大行其道.正是基于这样的背景,城市跑酷--这个好玩的游戏诞生了 2.机遇 手机触屏时代的到来 ...
- 基因表达半衰期 | mRNA Half-Life
做单细胞RNA-seq分析,自然就能想到我们测到的其实是一个概率学的东西,就像女士品茶里的酵母的泊松分布一样. 真实的细胞里,一切都是连续的,从DNA到mRNA到蛋白,是有一个时间间隔的,每一个pro ...
- hibernate如何配置自动生成表
hibernate自动生成表有两种方法: 1.直接写代码,通过方法来创建数据库表. 2.通过 hibernate.cfg.xml配置标签来创建数据表. 下面依次实现: 1.直接写代码,通过方法来创建数 ...