一:题目

有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)的更多相关文章

  1. 团体队列UVA540 Team Queue(队列简单用法)

    题目背景 队列和优先级队列是大多数计算机科学家都知道的数据结构.但是团队队列却不被人熟知,尽管在生活中经常出现.比如,午餐时间的食堂门口的队列就是一个团队队列.在一个团队队列中,每个元素属于一个团队. ...

  2. 团体队列 UVA540 Team Queue

    题目描述 有t个团队的人正在排一个长队.每次新来一个人时,如果他有队友在排队,那么新人会插队到最后一个队友的身后.如果没有任何一个队友排队,则他会被排到长队的队尾. 输入每个团队中所有队员的编号,要求 ...

  3. UVa 540 (团体队列) Team Queue

    题意: 每个人都属于一个团体,在排队的时候,如果他所在的团体有人在队伍中,则他会站到这个团体的最后.否则站到整个队伍的队尾. 输出每次出队的人的编号. 分析: 容易看出,长队中,在同一个团体的人是排在 ...

  4. 【算法习题】数组中任意2个(3个)数的和为sum的组合

    题1.给定一个int数组,一个数sum,求数组中和为sum的任意2个数的组合 @Test public void test_find2() { int[] arr = { -1, 0, 2, 3, 4 ...

  5. 5_6 团体队列(UVa540)<queue与STL其他容器的综合运用>

    先给出T个团体,并给出每个团体有多少人和每个人的编号,然后所有团体一起排队,排成一条大队列,排队的原则是,一个成员加入,如果这个成员所在的团体已经有人在排队了,那么他就加到他所在团体的最后面,而不是整 ...

  6. 算法习题---5-7打印队列(UVa12100)

    一:题目 有一个打印机,有一些任务在排着队打印,每个任务都有优先级.打印时,每次取出队列第一个任务,如果它的优先级不是当前队列中最高的,就会被放到队尾,否则就打印出来.输出初始队列的第m个任务的打印时 ...

  7. 团体队列(UVa540)

    题目具体描述见:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_prob ...

  8. Dijkstra算法优先队列实现与Bellman_Ford队列实现的理解

    /* Dijkstra算法用优先队列来实现,实现了每一条边最多遍历一次. 要知道,我们从队列头部找到的都是到 已经"建好树"的最短距离以及该节点编号, 并由该节点去更新 树根 到其 ...

  9. JavaScript中的算法之美——栈、队列、表

    序 最近花了比较多的时间来学习前端的知识,在这个期间也看到了很多的优秀的文章,其中Aaron可能在这个算法方面算是我的启蒙,在此衷心感谢Aaron的付出和奉献,同时自己也会坚定的走前人这种无私奉献的分 ...

随机推荐

  1. c++的标准流入流出和使用例子

    参考链接 标准输出流(cout) 预定义的对象 cout 是 iostream 类的一个实例.cout 对象"连接"到标准输出设备,通常是显示屏.cout 是与流插入运算符 < ...

  2. .net框架 - File类与FileInfo类异同

    System.IO命名空间中提供的文件操作类有File和FileInfo,这两个类的功能基本相同,只是File是静态类,其中所有方法都是静态的,可以通过类名直接调用,不需要实例化.而FileInfo是 ...

  3. 洛谷 P3375 【模板】KMP字符串匹配 题解

    KMP模板,就不解释了 #include<iostream> #include<cstdio> #include<cstring> #include<algo ...

  4. AJAX备忘

    基础 AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML). AJAX 不是新的编程语言,而是一种使用现有标准的新方法. AJAX ...

  5. http://www.tldp.org/LDP/abs/abs-guide.txt.gz

    http://www.tldp.org/LDP/abs/abs-guide.txt.gz

  6. 【转】根据Quartz-Cron表达式获取最近几次执行时间

    public static List<String> getRecentTriggerTime(String cron) { List<String> list = new A ...

  7. OPCode详解及汇编与反汇编原理

    1. 何为OPCode 在计算机科学领域中,操作码(Operation Code, OPCode)被用于描述机器语言指令中,指定要执行某种操作的那部分机器码,构成OPCode的指令格式和规范由处理器的 ...

  8. Vue.js 十五分钟入门

    本文经授权转载,仅用于学习,版权归原作者所有. TypeScript 为 JavaScript 带来静态类型检查,让 JavaScript 编写中大型应用的时候可以应用工具来避免部分错误. Vue 很 ...

  9. 利用nc当作备用shell管理方案.

    ssh 有时候真的就是连不上了,然后是没什么然后了呢. 或者手残改错配置然后重新sshd了. 所以这时候需要备用的远程管理工具.nc是最好的选择,一般服务器都是 内网的,如果跳板机也管理不了呢. 安装 ...

  10. idea使用/***/单行注释格式化后会显示多行,如何能保持单行显示