UVA.540 Team Queue (队列)
UVA.540 Team Queue (队列)
题意分析
有t个团队正在排队,每次来一个新人的时候,他可以插入到他最后一个队友的身后,如果没有他的队友,那么他只能插入到队伍的最后。题目中包含以下操作:
1.ENQUEUE x :表示编号为x的入队;
2.DEQUEUE:长队的队首出队。
3.STOP:停止模拟
并且对于每一个DEQUEUE操作,输出队首的编号。
如果我们直接用一个队列来模拟的话,是无法实现的,原因在于,我们无法向队列中间插入元素。那么题目中还有一条重要的性质,那么就是:可以插入到他最后一个队友的身后。 有了这条性质,就可以保证每个队伍的顺序不会改变。比如说:
现在队列为空,101进队,201进队,301进队。然后102在进队,那么102一定是在101的后面;202进队,202一定会在201的后面,也就是说,队伍10X、20X、30X的相对顺序是不会改变的。
PS:这与哪个队伍首先入队的顺序有关。
PPS:上述例子认为10X为一队,20X为一队,30X位一队。
于是我们就可以分为2种队列:一种是表示队伍的队列,一种是表示队伍之间各个成员的队列。出队时,先根据队伍队列,决定是哪个队伍的成员线出队,当某队伍成员全部出队后,将这个队伍的队列销毁(即出队),看下一个是哪个队伍,再对下一个队伍的每个成员依次出队。直到停止模拟。
代码总览
#include <iostream>
#include <cstdio>
#include <queue>
#include <map>
#define nmax 1005
using namespace std;
int main()
{
//freopen("in.txt","r",stdin);
int n,cas = 1;
while(scanf("%d",&n) && n){
printf("Scenario #%d\n",cas++);
map<int,int> mmp;
for(int j = 0; j<n; ++j){
int m,t;
scanf("%d",&m);
for(int i = 0 ; i<m; ++i){ scanf("%d",&t);mmp[t] = j;}
}
char com[10];
queue<int> t,team[nmax];
while(1){
scanf(" %s",com);
if(com[0] == 'S')break;
if(com[0] == 'D'){
int temp = t.front();
printf("%d\n",team[temp].front());
team[temp].pop();
if(team[temp].empty()) t.pop();
}else if(com[0] == 'E'){
int id;
scanf("%d",&id);
if(team[mmp[id]].empty())t.push(mmp[id]);
team[mmp[id]].push(id);
}
}
printf("\n");
}
return 0;
}
UVA.540 Team Queue (队列)的更多相关文章
- UVA 540 Team Queue(模拟+队列)
题目代号:UVA 540 题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page ...
- uva 540 - Team Queue(插队队列)
首发:https://mp.csdn.net/mdeditor/80294426 例题5-6 团体队列(Team Queue,UVa540) 有t个团队的人正在排一个长队.每次新来一个人时,如果他有队 ...
- UVa 540 Team Queue 【STL】
题意:给出t个团体,这t个团体排在一起,每次新来一个x排队,如果在整个的团体队列中,有x的队友,那么x排在它的队友的后面,如果他没有队友,则排在长队的队尾 求给出的每一个出队命令,输出出队的人的编号 ...
- UVA 540 Team Queue
思路:使用优先队列,按队伍出现的时刻和自身出现的时刻定义优先级,同时记录此时刻队列里是否有自己队伍的人,一开始没注意,wa了两发. #include<map> #include<qu ...
- uva 540 (Team Queue UVA - 540)
又是一道比较复杂的模拟题.题中有两种队列,一种是总队列,从前向后.其他的是各个团体的小队列,因为入队的人如果有队友的话,会优先进入团体队列. 所以我们先设置两个队列和一个map,设置map倒是可以不用 ...
- POJ 2259 - Team Queue - [队列的邻接表]
题目链接:http://poj.org/problem?id=2259 Queues and Priority Queues are data structures which are known t ...
- POJ 2259 Team Queue(队列)
题目原网址:http://poj.org/problem?id=2259 题目中文翻译: Description 队列和优先级队列是大多数计算机科学家已知的数据结构. 然而,Team Queue并不是 ...
- 团体队列UVA540 Team Queue(队列简单用法)
题目背景 队列和优先级队列是大多数计算机科学家都知道的数据结构.但是团队队列却不被人熟知,尽管在生活中经常出现.比如,午餐时间的食堂门口的队列就是一个团队队列.在一个团队队列中,每个元素属于一个团队. ...
- (队列的应用5.3.2)POJ 2259 Team Queue(队列数组的使用)
/* * POJ_2259.cpp * * Created on: 2013年10月30日 * Author: Administrator */ #include <iostream> # ...
随机推荐
- PyCharm添加Selenium与Appium类库
PyCharm添加Selenium与Appium依赖, 不需要用pip去安装!
- APP九宫格滑动解锁的处理
写手机自动化测试脚本关于APP九宫格滑动解锁方面采用了appium API 之 TouchAction 操作. 先是用uiautomatorviewer.bat查询APP元素坐标: 手工计算九宫格每个 ...
- Kotlin的密封(Sealed)类:超强的枚举(KAD 28)
作者:Antonio Leiva 时间:Jun 27, 2017 原文链接:https://antonioleiva.com/sealed-classes-kotlin/ Kotlin的封装类是Jav ...
- es6笔记4^_^function
一.function默认参数 现在可以在定义函数的时候指定参数的默认值了,而不用像以前那样通过逻辑或操作符来达到目的了. es5 function sayHello(name){ //传统的指定默认参 ...
- 158. Valid Anagram【LintCode by java】
Description Write a method anagram(s,t) to decide if two strings are anagrams or not. Clarification ...
- 【token接口】-jmeter
token 接口 3步骤 1.登录接口 2.提取登录接口的token 3.http 信息管理头 把提取的cookie传入 就可以了
- 【springmvc+mybatis项目实战】杰信商贸-3.需求分析与数据库建模
开发步骤需求:生产厂家信息维护基础表FACTORY_C 1.业务需求:a)<需求说明书> 1)描述业务功能 生产厂家模块 功能:为在购销合同模块中的货物信息和附件信 ...
- 微信小程序navigator跳转失效
在编写小程序时遇到一个问题:使用 <navigator url='/pages/lists/index'>...</navigator>进行跳转没有反应.控制台也没有报错,ap ...
- visionpro吧-百度贴吧
Halcon,Visionpro视频教程,观看下载地址:http://www.211code.com
- #pragma pack(n)对齐格式
#pragma pack(n)对齐格式 #pragma pack(n) 是预处理器用来指定对齐格式的指令,表示n对齐.当元素字节小于n时,要扩展到n:若元素字节大于n则占用其实际大小. struct ...