博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
团体队列 UVA540 Team Queue
阅读量:6453 次
发布时间:2019-06-23

本文共 1451 字,大约阅读时间需要 4 分钟。

题目描述

有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

#define LOCAL#include
#include
#include
#include
#include
using namespace std;const int maxn=100;int main(){ #ifdef LOCAL freopen("data.in","r",stdin); freopen("data.out","w",stdout); #endif //!1.记录所有人的团队编号,从0开始 int t;//共有t个团队 int kase=0; while(scanf("%d",&t) == 1 && t>0){ map
team; cout<<"Scenario #"<<++kase<
>n; int code; while(n--){scanf("%d",&code);team[code]=i;} } //!2.模拟 queue
q,q2[maxn]; while(1){ int x; string cmd; cin>>cmd; if(cmd[0] == 'S')break; else if(cmd[0] == 'D'){ x=q.front(); cout<
<
>x; int t=team[x]; if(q2[t].empty())q.push(t); q2[t].push(x); } } cout<

转载于:https://www.cnblogs.com/MarkKobs-blog/p/10459979.html

你可能感兴趣的文章
redis-cli 命令总结
查看>>
CentOS 4.4双网卡绑定,实现负载均衡
查看>>
GitHub页面使用方法
查看>>
Python爬虫综述(笔记)
查看>>
Scala之柯里化和隐式转换
查看>>
Merge and BottomUpSort
查看>>
reids 安装记录
查看>>
获取androdmanifest里面的meta-data
查看>>
mysql拷贝表的几种方式
查看>>
NetApp FAS2240-4存储删除文件数据恢复
查看>>
用设计模式去掉没必要的状态变量 —— 状态模式
查看>>
linux安装elasticsearch及遇到的各种问题
查看>>
健忘的正则
查看>>
[转]CMake快速入门教程:实战
查看>>
IntelliJ IDEA创建JavaWeb工程及配置Tomcat部署
查看>>
Markdown用法
查看>>
求最大值及其下标
查看>>
Request header is too large
查看>>
轮播插件swiper.js?
查看>>
网路流24题总结
查看>>