Team Queue

luogu-UVA540

poj 2259

题目大意:

有n个小组的人要排队,每个小组中有若干个人,当一个人入队时,如果队中有自己小组的人就跟在此人后面,否则站在队尾,现在给出一些操作,让你去操作,分别是:
从队尾入队:ENQUEUE
从对头出队:DEQUEUE
结束当前数据:STOP

样例输入

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

样例输出

Scenario #1
101
102
103
201
202
203Scenario #2
259001
259002
259003
259004
259005
260001

数据范围

1&lt;=n&lt;=10001&lt;=n&lt;=10001<=n<=1000
人的编号是0到999999范围内的整数
一个团队最多可包含1000个人

解题思路:

用n+1个队列,有1个是存小组,其它n个是存小组内的人,当某个人入队时,就直接进他小组的队,如果他进来之前,小组没人入队,那他所在的小组入队,取出时,也差不多,就去第一个小组里面取最前面的

代码:

#include<queue>
#include<cstdio>
#include<string>
#include<cstring>
#include<iostream>
using namespace std;
int n,x,y,t,a[1000500];
string str;
int main()
{scanf("%d",&n);while(n){printf("Scenario #%d\n",++t);//输出第几组数据for (int i=1;i<=n;++i){scanf("%d",&x);for (int j=1;j<=x;++j){scanf("%d",&y);a[y]=i;//第y个人在第i小组}}queue<int>d[1001];//定义队列cin>>str;while(str!="STOP"){if(str=="ENQUEUE")//入队{scanf("%d",&x);if (d[a[x]].empty())//如果小组没人,那小组进队d[0].push(a[x]);d[a[x]].push(x);//如小组的队}else if(str=="DEQUEUE")//查询{x=d[0].front();//最前面的小组y=d[x].front();//最前面的人d[x].pop();if (d[x].empty())//如果小组空了那小组出队d[0].pop();printf("%d\n",y);//输出}cin>>str;}putchar(10);scanf("%d",&n); }
}

【队列】Team Queue(luogu-UVA540/poj 2259)相关推荐

  1. 解题报告——例题 5-6团体队列(Team Queue UVa 540)——31行代码解决

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

  2. 540 - Team Queue

    Team Queue PS:因为该题排版较麻烦,这里给出OJ网址:UVa540 - Team Queue 有t个团队的人正在排一个长队.每次新来一个人时,如果他有队友在排队,那么这个新人会插队到最后一 ...

  3. 【贪心】Stall Reservations(luogu 2859/poj 3190)

    Stall Reservations luogu 2859 poj 3190 题目大意: 有n头牛,每头牛都有自己的挤奶时间,挤奶时间内每头牛用一个奶棚,现在问最少需要多少个奶棚 输入样例 5 1 1 ...

  4. 算法竞赛进阶指南0x12:Team Queue

    原题链接 有 n 个小组要排成一个队列,每个小组中有若干人. 当一个人来到队列时,如果队列中已经有了自己小组的成员,他就直接插队排在自己小组成员的后面,否则就站在队伍的最后面. 请你编写一个程序,模拟 ...

  5. HDU1387 Team Queue

    题目描述: Problem Description Queues and Priority Queues are data structures which are known to most com ...

  6. 【Java】使用单向链表实现一个队列(Queue)

    队列(Queue)是数据结构的一种,元素存储满足的特征是先入的先出(类似于现实生活中的排队这一场景) 队列的实现可以使用双向链表,也可以使用单向链表: 在使用单向链表实现队列时候,需要多加一个记录尾结 ...

  7. Berkeley DB的数据存储结构——哈希表(Hash Table)、B树(BTree)、队列(Queue)、记录号(Recno)...

    Berkeley DB的数据存储结构 BDB支持四种数据存储结构及相应算法,官方称为访问方法(Access Method),分别是哈希表(Hash Table).B树(BTree).队列(Queue) ...

  8. python 实现队列功能 queue insert() pop()

    def calculate_detection_num(self, calcu_list, detect_num):"""计算一段次数内平均识别个数"" ...

  9. 五、队列(Queue)

    一.概述 队列(queue): 只允许在一端进行插入 (队尾) 操作,而在另一端 (队头) 进行删除操作的线性表. 队头:删除操作的一端--front 队尾:插入操作的一端--rear 特点:先进先出 ...

最新文章

  1. 转录组的技术应用 (生物学、医学、农学中的应用)
  2. AI专家Marcus质疑深度学习:面临十大挑战(含参考文献)
  3. python各种推导式详解
  4. Maven-学习笔记05【基础-使用骨架创建Maven的Java工程】
  5. C语言运行界面字体,C语言实现图形界面登陆窗口.docx
  6. win32汇编入门(一)
  7. mysql测试数据图表_mysql测试数据表
  8. cacti 监控安装失败
  9. 电商节直播研究报告—以618为例
  10. Linux 修改IP及虚拟网卡配置详解
  11. shell获取路径文件的文件名
  12. 关于如何在网页中添加自己的QQ客服方法
  13. 机械学哪种计算机语言,对于机器学习,到底该选择哪种编程语言?
  14. PyTorch 靠谱的模型可视化教程
  15. Linux yum仓库的安装
  16. 系统辨识(四):系统辨识的经典方法
  17. 高端游戏计算机配置单,全球最顶级的游戏电脑配置 高端游戏电脑装机推荐
  18. Java 随机生成中文姓名,手机号,邮编,住址
  19. css深入理解flex布局中的剩余空间分配规则——flex-grow,flex-shrink和flex-basis
  20. 51单片机---麻雀虽小,五脏俱全

热门文章

  1. shiro单点登录原理_SSO单点登录三种情况的实现方式详解
  2. eladmin代码自动生成_如何让Mybatis自动生成代码
  3. harmonyos con,鸿蒙HarmonyOS系统中的JS开发框架
  4. 三菱四节传送带控制梯形图_一文讲透FX5U PLC程序控制指令及步进梯形图编程
  5. Java当中 递归打印文件大小(面向不同的对象打印文件大小)
  6. 每天一小时python官方文档学习(二)————流程控制工具
  7. LeetCode 24两两交换链表中的节点-中等
  8. Decorator(装饰)--对象结构型模式
  9. 数据结构与算法--B树原理及实现
  10. matlab 传感器的迟滞,MATLAB PI迟滞模型问题