ACM题目————Team Queue
Queues and Priority Queues are data structures which are known to most computer scientists. The Team Queue, however, is not so well known, though it occurs often in everyday life. At lunch time the queue in front of the Mensa is a team queue, for example.
In a team queue each element belongs to a team. If an element
enters the queue, it first searches the queue from head to tail to
check if some of its teammates (elements of the same team) are
already in the queue. If yes, it enters the queue right behind
them. If not, it enters the queue at the tail and becomes the new
last element (bad luck). Dequeuing is done like in normal queues:
elements are processed from head to tail in the order they appear
in the team queue.
Your task is to write a program that simulates such a team
queue.
Input
The input file will contain one or more test cases. Each test case
begins with the number of teams t ( ). Then t team descriptions
follow, each one consisting of the number of elements belonging to
the team and the elements themselves. Elements are integers in the
range 0 - 999999. A team may consist of up to 1000 elements.
Finally, a list of commands follows. There are three different
kinds of commands:
ENQUEUE x - enter element x into the team queue
DEQUEUE - process the first element and remove it from the
queue
STOP - end of test case
The input will be terminated by a value of 0 for t.
Warning: A test case may contain up to 200000 (two hundred
thousand) commands, so the implementation of the team queue should
be efficient: both enqueing and dequeuing of an element should only
take constant time.
Output
For each test case, first print a line saying ``Scenario #k", where
k is the number of the test case. Then, for each DEQUEUE command,
print the element which is dequeued on a single line. Print a blank
line after each test case, even after the last one.
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
题意:有n个队伍。 对于每个ENQUEUE x 命令。 如果x所在的队伍已经在队列中, 则x排在队列中它的队伍的尾巴, 否则排在队列的末尾。 可以理解为队列中的队列的味道。
这题有点蒙,但是弄懂后,感觉自己对队列似乎了解深了许多啊!
//Asimple
//#include <bits/stdc++.h>
#include <stdio.h>
#include <iostream>
#include <algorithm>
#include <iterator>
#include <deque>
#include <string>
#include <string.h>
#include <vector>
#include <stack>
#include <ctype.h>
#include <queue>
#include <math.h>
#include <stdlib.h>
#include <map>
#include <set>
#include <time.h>
#include <bitset>
#include <list> using namespace std;
#define INF 0xFFFFFFFF
typedef long long ll ;
typedef list<int>::iterator l_iter;
typedef multimap<string,string>::iterator mss_iter;
typedef map<string,string>::iterator m_iter;
typedef set<int>::iterator s_iter;
typedef vector<int>::iterator v_iter;
multimap<string,string> mss;
const int maxn = 1000;
const int Max = 1000000;
int n, T, num, cnt;
string str;
stack<set<int> > stk;
map<set<int>, int> m;
set<int> s1, s2;
queue<int> q;
queue<int> qq[maxn];
list<int> L;
int a[Max]; int main()
{
int k = 1 ;
while( cin >> T && T )
{
while( !q.empty() ) q.pop();
for(int i=0; i<maxn; i++)
while( !qq[i].empty() )
qq[i].pop();
memset(a,0,sizeof(a));
//入队
for(int i=0; scanf("%d",&n)==1; i++)
{
for(int j=0; j<n; j++)
{
scanf("%d%*c",&num);
a[num] = i ;
}
} cout << "Scenario #" << k << endl ;
while(true)
{
cin >> str ;
if( str == "STOP" )
{
cout << endl ;
break;
}
if( str == "ENQUEUE" )
{
scanf("%d%*c",&num);
if( qq[a[num]].empty() )
q.push(a[num]);
qq[a[num]].push(num);
}
if( str == "DEQUEUE" )
{
int q_num = q.front();
cout << qq[q_num].front() << endl ;
qq[q_num].pop();
if( qq[q_num].empty() )
q.pop();
}
} k ++ ;
} return 0;
}
ACM题目————Team Queue的更多相关文章
- ACM学习历程——UVA540 Team Queue(队列,map:Hash)
Description Team Queue Team Queue Queues and Priority Queues are data structures which are know ...
- Team Queue(STL练习题)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1387 Team Queue Time Limit: 2000/1000 MS (Java/Others ...
- POJ 2259 - Team Queue - [队列的邻接表]
题目链接:http://poj.org/problem?id=2259 Queues and Priority Queues are data structures which are known t ...
- UVA Team Queue
版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/u013840081/article/details/26180081 题目例如以下: Team Qu ...
- UVA.540 Team Queue (队列)
UVA.540 Team Queue (队列) 题意分析 有t个团队正在排队,每次来一个新人的时候,他可以插入到他最后一个队友的身后,如果没有他的队友,那么他只能插入到队伍的最后.题目中包含以下操作: ...
- 【UVA - 540】Team Queue (map,队列)
Team Queue Descriptions: Queues and Priority Queues are data structures which are known to most comp ...
- POJ 2259 Team Queue(队列)
题目原网址:http://poj.org/problem?id=2259 题目中文翻译: Description 队列和优先级队列是大多数计算机科学家已知的数据结构. 然而,Team Queue并不是 ...
- UVA 540 Team Queue(模拟+队列)
题目代号:UVA 540 题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page ...
- UVA540 Team Queue——题解 by hyl天梦
UVA540 Team Queue 题解 题目描述:题目原题 https://vjudge.net/problem/UVA-540 Queues and Priority Queues are dat ...
随机推荐
- ORACLE数据库用户账号处于expired状态如何处理
账户过期,必须要用户更改密码, 账户才能重新使用. 但有些时候, 因为各种原因, 我们并不知道原密码的明文是什么,但很多时候又不能修改已有密码,好在可以用原密码来更改密码. 在11G中,dba_use ...
- Oracle Flashback Technologies - 估算不同时间段闪回日志的产生量
Oracle Flashback Technologies - 估算不同时间段闪回日志的产生量 v$flashback_database_stat监控闪回数据的i/o开销的统计信息,根据之前的系统负载 ...
- 布置theano(Ubuntu14.04 LTS)
引言 由于研究生阶段将会从事自然语言处理方向的研究,目前要用到机器学习和深度学习相关的框架,那应老师的要求,将要使用theano,由于theano官方文档中关于ubuntu下配置的问题并没有给出很好的 ...
- linux:指令与档案的搜索
linux下的五种搜索方法(参考自鸟哥linux私房菜基础篇): 一.find :功能很强大,直接搜寻整个硬碟的(速度不是很快,如果系统硬碟较旧的话)----特色:find后面可以接多个目录搜索,它本 ...
- linux:习惯
1>.系统里面必须最少有两个账号,一个root,一个普通账户; 2>.平时登录系统均使用普通账户登录,除非需要配置或者执行特殊命令才切换至root; 3>.linux系统下严格区分大 ...
- 异常积累:org.hibernate.StaleStateException
ERROR - Exception executing batch: org.hibernate.StaleStateException: Batch update returned unexpec ...
- object_id的用法
OBJECT_ID: 返回数据库对象标识号. 语法 OBJECT_ID ( 'object' ) 参数 'object' 要使用的对象.object 的数据类型为 char 或 nchar.如果 ob ...
- Struts2配置文件各种标签的含义
最近正在学习Struts2,在配置文件中遇到好多标签,各种意义不同.为了方便学习,便把各种标签的书写和含义总结如下:(随时更新) <struts> <!-- 开启使用开发 ...
- maven的中传递依赖,maven的依赖管理(转)
在maven的pom文件中 <dependencies> <dependency> <groupId>junit</groupId> <artif ...
- Android Preview显示
Android Studio的功能包含preview窗口, 可以查看布局(layout)的样式; 位置: app->src->main->res(资源)->layout(布局) ...