UVA540 团体队列 Team Queue

简介: UVA540 团体队列 Team Queue

题目描述


有t个团队的人正在排一个长队。每次新来一个人时,如果他有队友在排队,那么新人会插队到最后一个队友的身后。如果没有任何一个队友排队,则他会被排到长队的队尾。 输入每个团队中所有队员的编号,要求支持如下3中指令: ENQUEUE x:编号为x的人进入长队 DEQUEUE:长队的队首出队 STOP:停止模拟 对于每个DEQUEUE指令,输出出队的人的编号。

输入样例:

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
203
Scenario #2
259001
259002
259003
259004
259005
260001

实现代码

#include<bits/stdc++.h>
using namespace std;
const int maxt = 1000 + 10;//最多的团队数
int case1, n,m,num,teamNum,outNum;
map<int, int> team;
string str;
int main() {
  while (cin>>n && n) {//每个测试案例
    cout << "Scenario #" << ++case1 << endl;
    for (int i = 0; i < n; i++) {//n个团队
      cin >> m;
      for (int j = 0; j < m; j++) {
        cin >> num;
        team[num] = i;//将团队编号和个人编号一一对应
      }
    }
    //定义队列,进行模拟
    queue<int> q1, q2[maxt];//第一个是大团队队列,第二个是小团队队列,里面每个元素都是一个小团队队列。
    while (cin >> str && str[0] != 'S') {
      if (str[0] == 'E') {
        cin >> num;
        teamNum = team[num];
        if (q2[teamNum].empty())//判断小队队列是否有元素   (这里不能去q1中找是否有该小队,因为对于队列来说,只能边出队边遍历)
        {
          q2[teamNum].push(num);
          q1.push(teamNum);
        }
        else {
          q2[teamNum].push(num);
        }
      }
      else if (str[0] == 'D') {
        teamNum = q1.front();
        outNum =  q2[teamNum].front();
        q2[teamNum].pop();//元素出队
        if (q2[teamNum].empty()) {//判断所在小队是否为空
          q1.pop();
        }
        cout << outNum << endl;
      }
    }
    cout << endl;
  }
  return 0;
}

注:对于C++字符串比较可以 点击这里去看哦,这个大佬写的很不错。

相关文章
|
C++ 容器
[C++随笔录] stack && queue使用
[C++随笔录] stack && queue使用
|
机器学习/深度学习 测试技术 C++
[C++随笔录] stack && queue模拟实现
[C++随笔录] stack && queue模拟实现
uva540 team queue
uva540 team queue
38 0
|
6月前
|
机器学习/深度学习 存储 测试技术
[C++/PTA] 队列操作
[C++/PTA] 队列操作
51 0
|
存储 算法 C语言
【C++从0到王者】第十六站:stack和queue的使用
【C++从0到王者】第十六站:stack和queue的使用
58 0
uva133 The Dole Queue
uva133 The Dole Queue
63 0
|
C++
【PAT甲级 - C++题解】1051 Pop Sequence
【PAT甲级 - C++题解】1051 Pop Sequence
80 0
|
安全 Java fastjson
Ichunqiu云境 —— Exchange Writeup
1. OSCP 渗透风格,脱离C2和MSF之类的工具 2. Box 难度不高
|
存储 设计模式 算法
【C++ STL】 趣学stack&queue&priority_queue【对话情景版】
本篇将学习stack&queue&priority_queue基础知识及其模拟实现。
11348 0
|
机器学习/深度学习 测试技术 C++
C++/PTA 队列操作
请实现一个MyQueue类,实现出队,入队,求队列长度.
150 0