UVA 540 Team Queue
思路:使用优先队列,按队伍出现的时刻和自身出现的时刻定义优先级,同时记录此时刻队列里是否有自己队伍的人,一开始没注意,wa了两发。
#include<map>
#include<queue>
#include<cstdio>
#include<string>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
const int MAXN = 1010;
map<int, int>mp;
int teamPos[MAXN],existElem[MAXN], T, n;
struct Elem{
int idx, pos, self;
Elem(int idx, int pos, int self){
this->pos = pos;
this->idx = idx;
this->self = self;
}
bool operator < (const Elem &A) const {
if(idx == A.idx) return pos > A.pos;
return idx > A.idx;
}
};
int main(){
string str;
int elemNum, CASE(0);
freopen("in.cpp", "r", stdin);
while(~scanf("%d", &T) && T){
mp.clear();
priority_queue<Elem>Q;
while(!Q.empty()) Q.pop();
for(int i = 1;i <= T;i ++){
scanf("%d", &n);
for(int j = 0;j < n;j ++){
scanf("%d", &elemNum);
mp.insert(pair<int, int>(elemNum, i));
}
}
int num(0), cnt(0);
memset(teamPos, 0, sizeof teamPos);
memset(existElem, 0, sizeof existElem);
printf("Scenario #%d\n", ++CASE);
while(cin >> str && str[0] != 'S'){
if(str[0] == 'D'){
int tmp = Q.top().self;
printf("%d\n",tmp);
map<int, int>::iterator it = mp.find(tmp);
existElem[it->second] --;
Q.pop();
continue;
}
scanf("%d", &n);
map<int, int>::iterator it = mp.find(n);
int idx = it->second;
if(teamPos[idx] && existElem[idx]) Q.push(Elem(teamPos[idx], cnt++, n));
else{
Q.push(Elem(++num, cnt++, n));
teamPos[idx] = num;
}
existElem[idx]++;
}
puts("");
}
return 0;
}
UVA 540 Team Queue的更多相关文章
- UVA.540 Team Queue (队列)
UVA.540 Team Queue (队列) 题意分析 有t个团队正在排队,每次来一个新人的时候,他可以插入到他最后一个队友的身后,如果没有他的队友,那么他只能插入到队伍的最后.题目中包含以下操作: ...
- 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 UVA - 540)
又是一道比较复杂的模拟题.题中有两种队列,一种是总队列,从前向后.其他的是各个团体的小队列,因为入队的人如果有队友的话,会优先进入团体队列. 所以我们先设置两个队列和一个map,设置map倒是可以不用 ...
- 【UVA - 540】Team Queue (map,队列)
Team Queue Descriptions: Queues and Priority Queues are data structures which are known to most comp ...
- Team Queue UVA - 540
Queues and Priority Queues are data structures which are known to most computer scientists. The Te ...
- UVA Team Queue
版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/u013840081/article/details/26180081 题目例如以下: Team Qu ...
- hdu 1387(Team Queue) STL
Team Queue Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total ...
随机推荐
- pc telnet 登录 android 系统
前提是:1) 手机已经root,且装有busybox,2) 还装有至少一款terminal(模拟终端)软件,手机连wifi路由器.3) 还要有一些基础常识,比如linux命令,telnet.这里模拟终 ...
- java StringBuffer与StringBuilder
StringBuffer:就是字符串缓冲区. * 用于存储数据的容器. * 特点: * 1,长度的可变的. * 2,可以存储不同类型数 ...
- PHP学习心得(二)——实用脚本
<?php 来表示 PHP 标识符的起始,然后放入 PHP 语句并通过加上一个终止标识符 ?> 来退出 PHP 模式 调用函数phpinfo(),将会看到很多自己系统的信息,以及预定义变量 ...
- python import
在执行 import module 时 会从 1 当前目录 2 pythonpath(可以通过 os.sys.path 查看) 3 python 安装目录 b import 了 a, c impo ...
- SSH搭建完美CURD,含分页算法
今日开始研究使用java平台上的框架解决web服务端的开发. 这是一个完整的SSH实例,在马士兵老师的SSH整合代码基础上,增加用户的增删改查,同时实现structs方式的分页 放出源代码供大家学习参 ...
- 几种更新(Update语句)查询的方法【转】
正 文: 数据库更新就一种方法Update,其标准格式:Update 表名 set 字段=值 where 条件不过根据数据的来源不同,还是有所区别的: 1.从外部输入这种比较简单例:update t ...
- 把Mvc4项目部署到虚拟目录之后找不到control想到的文件路径规范的问题
最近部署的项目的时候由于端口不够用,想到了把Mvc项目部署到虚拟目录中,结果发现图片,js设置control都找不到了.项目是mvc4+easyui开发的,大量的代码都是在js中调用control,写 ...
- sencha touch jsonp
asp.net server side code <%@ Page Language="C#" %> <script runat="server&quo ...
- js 转化类似这样的时间( /Date(1389060261000)/)问题
首先在你的js文件里添加这段代码: /** * 日期时间格式化方法, * 可以格式化年.月.日.时.分.秒.周 **/ Date.prototype.Format = function (format ...
- 双缓冲(Double Buffer)原理和使用
转自双缓冲(Double Buffer)原理和使用 一.双缓冲作用 双缓冲甚至是多缓冲,在许多情况下都很有用.一般需要使用双缓冲区的地方都是由于"生产者"和& ...