这里插队的意思就是排队时遇到熟人则插到其后,否则排到队尾。(这个习惯不太好)(题意)


  题目要求我们模拟“插队模型”和队列的入队和出队完成此算法。

  由于题目的输入输出很多,此题的查找操作(找到熟人)需要控制到O(1),因此映射每一个人际圈(所属同一队伍的意思)的编号而非每个人就很重要了,可以将不同人际圈的编号依次入队,而非每个人依次入队,这样主队列中的元素就是各人际圈的编号,而将入队的每个人压入到该人际圈,这样一种思想就是标题上所写的"嵌套"队列了(纯属杜撰)。

  具体代码如下:

 //嵌套队列-插队:遇到熟人则插在其后,否则在队尾,按操作输入后输出Dequeue的编号
//Time:141ms Memory:760K
#include<iostream>
#include<cstring>
#include<cstdio>
#include<queue>
using namespace std;
#define MAX 1001
#define MAX_NUM 1000001 //编号
queue<int> team[MAX]; //队伍
queue<int> q; //主队列-保存各队伍入队顺序
bool v_team[MAX]; //队列已入队标记
int ele[MAX_NUM]; //映射:编号-队伍
int main()
{
int n; //队列数
int scenario = ; while (scanf("%d", &n), n)
{
/*Init*/
memset(v_team, false, sizeof(v_team));
for (int i = ; i < n; i++)
while (!team[i].empty()) team[i].pop();
while (!q.empty()) q.pop();
/*Input*/
for (int i = ; i < n; i++)
{
int m; //队员数
scanf("%d", &m);
for (int j = ; j < m; j++)
{
int mem;
scanf("%d", &mem);
ele[mem] = i;
}
}
/*Main*/
char command[];
printf("Scenario #%d\n", ++scenario);
while (scanf("%s", command), strcmp(command, "STOP"))
{
if (!strcmp(command, "ENQUEUE")) //ENQUEUE
{
int mem;
scanf("%d", &mem);
//不存在存在该元素队列
if (!v_team[ele[mem]])
{
v_team[ele[mem]] = true;
q.push(ele[mem]); //压入team number
}
team[ele[mem]].push(mem);
}
else { //DEQUEUE
int mem = team[q.front()].front();
team[q.front()].pop();
if (team[ele[mem]].empty())
{
v_team[ele[mem]] = false;
q.pop(); //抛出team number
}
printf("%d\n", mem);
}
}
printf("\n"); } return ;
}

ACM/ICPC 之 "嵌套"队列 -插队(POJ2259)的更多相关文章

  1. ACM/ICPC 之 优先级队列+设置IO缓存区(TSH OJ-Schedule(任务调度))

    一个裸的优先级队列(最大堆)题,但也有其他普通队列的做法.这道题我做了两天,结果发现是输入输出太过频繁,一直只能A掉55%的数据,其他都是TLE,如果将输入输出的数据放入缓存区,然后满区输出,可以将I ...

  2. 【转】lonekight@xmu·ACM/ICPC 回忆录

    转自:http://hi.baidu.com/ordeder/item/2a342a7fe7cb9e336dc37c89 2009年09月06日 星期日 21:55 初识ACM最早听说ACM/ICPC ...

  3. hduoj 4712 Hamming Distance 2013 ACM/ICPC Asia Regional Online —— Warmup

    http://acm.hdu.edu.cn/showproblem.php?pid=4712 Hamming Distance Time Limit: 6000/3000 MS (Java/Other ...

  4. HDU 5876 Sparse Graph 【补图最短路 BFS】(2016 ACM/ICPC Asia Regional Dalian Online)

    Sparse Graph Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others)To ...

  5. 铁轨(rails, ACM/ICPC CERC 1997,Uva 514)

    铁轨(rails, ACM/ICPC CERC 1997,Uva 514) 题目描述 某城市有一个火车站,铁轨铺设如图所示.有n节车厢从A方向驶入车站,按进站顺序编号为1~n.你的任务是让它们按照某种 ...

  6. 2015 ACM/ICPC Asia Regional Changchun Online HDU 5444 Elven Postman【二叉排序树的建树和遍历查找】

    Elven Postman Time Limit: 1500/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)T ...

  7. 2014嘉杰信息杯ACM/ICPC湖南程序设计邀请赛暨第六届湘潭市程序设计竞赛

    比赛链接: http://202.197.224.59/OnlineJudge2/index.php/Contest/problems/contest_id/36 题目来源: 2014嘉杰信息杯ACM ...

  8. ACM/ICPC 之 BFS(离线)+康拓展开(TSH OJ-玩具(Toy))

    祝大家新年快乐,相信在新的一年里一定有我们自己的梦! 这是一个简化的魔板问题,只需输出步骤即可. 玩具(Toy) 描述 ZC神最擅长逻辑推理,一日,他给大家讲述起自己儿时的数字玩具. 该玩具酷似魔方, ...

  9. ACM ICPC 2015 Moscow Subregional Russia, Moscow, Dolgoprudny, October, 18, 2015 G. Garden Gathering

    Problem G. Garden Gathering Input file: standard input Output file: standard output Time limit: 3 se ...

随机推荐

  1. mysql中set autocommit=0与start transaction区别

    set autocommit=0,当前session禁用自动提交事物,自此句执行以后,每个SQL语句或者语句块所在的事务都需要显示"commit"才能提交事务. start tra ...

  2. PPTP(Point to Point Tunneling Protocol),即点对点隧道协议。

    PPTP PPTP(Point to Point Tunneling Protocol),即点对点隧道协议.该协议是在PPP协议的基础上开发的一种新的增强型安全协议,支持多协议虚拟专用网(VPN),可 ...

  3. php中pdo例子

    下面是从其他博客看到的代码 <?php $dbh = new PDO('mysql:host=localhost;dbname=access_control', 'root', ''); $db ...

  4. CF448C Painting Fence (分治递归)

    Codeforces Round #256 (Div. 2) C C. Painting Fence time limit per test 1 second memory limit per tes ...

  5. c# 获取系统时间

    //获取日期+时间DateTime.Now.ToString();             // 2008-9-4 20:02:10DateTime.Now.ToLocalTime().ToStrin ...

  6. [译]git clone

    git clone git clone命令copy一个已经存在的Git仓储. git clone有点像svn的checkout, 他的不同之处是这个copy也是一个完整的仓储-它有自己的历史纪录, 能 ...

  7. 基于iSCSI的SQL Server 2012群集测试(五)--镜像,作业,复制分发测试

    7.1.镜像测试 群集可以正常镜像到非群集环境,本次测试采用,无见证服务器的sql server验证的镜像连接,不同的是群集环境的镜像IP是采用SQL Server虚拟IP进行通信连接. 群集服务器: ...

  8. C# 中excel操作

    c#中设置Excel单元格格式    1.全表自动列宽 mysheet.Cells.Select(); mysheet.Cells.Columns.AutoFit(); 2.合并    excelRa ...

  9. SparkSql 不支持Date Format (支持Timestamp)

    最近项目中需要用到sparksql ,需要查询sql Date类型, 无奈,官方现阶段 1.6.0 还不支持Date类型,不过支持Timestamp类型,所以问题可以解决了. 1.解析 SimpleD ...

  10. linux之awk、sed命令

    总结: 两个命令的正则表达式都用''单引号进行区分. 输出变量名用单引号,输出变量值用双引号,这个在bash脚本里一般是通用的. 在bash脚本里要使用变量值,都要加上双引号 awk用法: 参考网址: ...