Team Queue

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 2009    Accepted Submission(s): 696

Problem Description
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 will contain one or more test cases. Each test case begins with
the number of teams t (1<=t<=1000). 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.

 
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

 题解:题意就是一个队列相同组的可以插队,插到相同队员的后面,思路是弄多个队列,用一个队列来确定队编号的序列,一个数组判断当前队是否还有队员,没有队员标记为空;
代码:
import java.util.HashMap;
import java.util.LinkedList;
import java.util.Scanner; public class hdu1387 {
static Scanner cin = new Scanner(System.in);
private static HashMap<Integer, Integer>mp = new HashMap<Integer, Integer>();
private static LinkedList<Integer>q[] = new LinkedList[1010];
private static int vis[] = new int[1010];
static{
for(int i = 0; i < q.length; i++){
q[i] = new LinkedList<Integer>();
}
}
public static void main(String[] args) {
int t, n, e, i, kase = 1;
while((t = cin.nextInt()) != 0){
init(t);
for(i = 0; i < t; i++){
n = cin.nextInt();
while(n-- > 0){
e = cin.nextInt();
mp.put(e, i);
}
}
String command;
System.out.println("Scenario #" + kase++);
while(!(command = cin.next()).equals("STOP")){
if("ENQUEUE".equals(command)){
e = cin.nextInt();
i = mp.get(e);
q[i].add(e);
if(vis[i] == 0){
q[t].add(i);
vis[i] = 1;
}
//0 1 0 0 1 0 1 1
}
else{
i = q[t].getFirst();
while(q[i].isEmpty()){
q[t].poll();
vis[i] = 0;
i = q[t].getFirst();
}
e = q[i].getFirst();
q[i].poll();
System.out.println(e);
}
}
System.out.println();
} }
private static void init(int t) {
for(int i = 0; i <= t; i++){
q[i].clear();
}
for(int i = 0; i < 1010; i++){
vis[i] = 0;
}
mp.clear();
}
}

Team Queue(多队列技巧处理)的更多相关文章

  1. Team Queue (uva540 队列模拟)

    Team Queue Queues and Priority Queues are data structures which are known to most computer scientist ...

  2. ACM学习历程——UVA540 Team Queue(队列,map:Hash)

    Description   Team Queue   Team Queue  Queues and Priority Queues are data structures which are know ...

  3. UVa540 Team Queue(队列queue)

    队列 STL队列定义在头文件<queue>中, 用“ queue<int>s ” 方式定义, 用push()和pop()进行元素的入队和出队操作, front()取队首元素(但 ...

  4. Team Queue POJ - 2259 (队列)

    Queues and Priority Queues are data structures which are known to most computer scientists. The Team ...

  5. POJ 2259 - Team Queue - [队列的邻接表]

    题目链接:http://poj.org/problem?id=2259 Queues and Priority Queues are data structures which are known t ...

  6. UVA.540 Team Queue (队列)

    UVA.540 Team Queue (队列) 题意分析 有t个团队正在排队,每次来一个新人的时候,他可以插入到他最后一个队友的身后,如果没有他的队友,那么他只能插入到队伍的最后.题目中包含以下操作: ...

  7. uva 540 - Team Queue(插队队列)

    首发:https://mp.csdn.net/mdeditor/80294426 例题5-6 团体队列(Team Queue,UVa540) 有t个团队的人正在排一个长队.每次新来一个人时,如果他有队 ...

  8. 【UVA - 540】Team Queue (map,队列)

    Team Queue Descriptions: Queues and Priority Queues are data structures which are known to most comp ...

  9. POJ 2259 Team Queue(队列)

    题目原网址:http://poj.org/problem?id=2259 题目中文翻译: Description 队列和优先级队列是大多数计算机科学家已知的数据结构. 然而,Team Queue并不是 ...

随机推荐

  1. EA+svn实现UML的版本号控制

    一.安装软件 1.VisualSvn Server svnserver 2.Tortoise Svn svnclient 3.Slik-Subversion-1.7.8-x64版本号控制插件 4.En ...

  2. UI Prototype Design IDE( 界面原型设计工具 )

    UI Prototype Design IDE( 界面原型设计工具 )   如何用工具去与客户进行交流,互动,定义要做的系统,什么什么的... 0.Balsamiq Mockups http://ww ...

  3. 你的第一Windows程序——管理应用程序状态

    MSDN原文(英文) 管理应用程序状态 一个窗口过程仅仅是一个为每个消息获取调用函数,所以它本质上是无状态的.因此,你需要一个方法来跟踪你的应用程序从一个函数调用下一个函数的状态. 最简单的方法是把一 ...

  4. SQL流程控制语句学习(三):while break continue

    1.while语法 while   布尔表达式 {sql语句或语句块} break  --跳出本层循环 {sql语句或语句块} continue  --跳出本次循环 {sql语句或语句块} 2.whi ...

  5. DNN Module - Responsive Html Tabs 3 介绍

    Responsive Html Tabs 模块可以运行于DNN7及以上版本,支持响应式.用户界面较为友好,可以插入自定义的HTML. Demo This is a user-friendly, ful ...

  6. ORACLE查询数据库的锁表情况

      查询数据库的锁表情况语句如下: SELECT p.spid,a.serial#, c.object_name,b.session_id,b.oracle_username,b.os_user_na ...

  7. Emoji表情在网页中显示

    最近遇到一个项目,客户手机上发送的表情要在电脑网页中显示,没有找到简便方法,于是有了以下方案. 由于Emoji表情传到后台是“口”,怎么找出接收数据中的表情是关键,各种搜索后,我用下面的正则表达式匹配 ...

  8. (原)torch的训练过程

    转载请注明出处: http://www.cnblogs.com/darkknightzh/p/6221622.html 参考网址: http://ju.outofmemory.cn/entry/284 ...

  9. 今日分享一点干货。PHP中课程表的实现。

    首先贴代码,代码贴完再细说: 前段HTML: <div id="studentRead" class="reading" style="z-in ...

  10. php代码生成二维码

    //引用范例 1 public function index() { 2 echo "<img src='http://qr.liantu.com/api.php?bg=f3f3f3& ...