博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
queue POJ 2259 Team Queue
阅读量:6992 次
发布时间:2019-06-27

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

 

题意:先给出一些小组成员,然后开始排队。若前面的人中有相同小组的人的话,直接插队排在同小组的最后一个,否则只能排在最后面。现在有排队和出队的操作。

分析:这题关键是将队列按照组数分组,用另外一个队列保存组的序号,当该组里没有人了才换下一组。很好的一道题。

收获:队列的灵活运用

 

代码:

/************************************************* Author        :Running_Time* Created Time  :2015/9/9 星期三 14:37:14* File Name     :M.cpp ************************************************/#include 
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;#define lson l, mid, rt << 1#define rson mid + 1, r, rt << 1 | 1typedef long long ll;const int N = 1e3 + 10;const int INF = 0x3f3f3f3f;const int MOD = 1e9 + 7;queue
id;queue
num[N];map
mp;bool inq[N];char op[11];int n;void init(void) { while (!id.empty ()) id.pop (); for (int i=1; i<=n; ++i) { while (!num[i].empty ()) num[i].pop (); } memset (inq, false, sizeof (inq)); mp.clear ();}int main(void) { int cas = 0; while (scanf ("%d", &n) == 1) { if (!n) break; init (); if (cas) puts (""); printf ("Scenario #%d\n", ++cas); int x; for (int i=1; i<=n; ++i) { int m; scanf ("%d", &m); for (int j=1; j<=m; ++j) { scanf ("%d", &x); mp[x] = i; } } scanf ("%s", &op); while (strcmp (op, "STOP")) { if (strcmp (op, "ENQUEUE") == 0) { scanf ("%d", &x); if (!inq[mp[x]]) { inq[mp[x]] = true; id.push (mp[x]); } num[mp[x]].push (x); } else { if (id.empty ()) continue; int fir = id.front (); printf ("%d\n", num[fir].front ()); num[fir].pop (); if (num[fir].empty ()) { inq[fir] = false; id.pop (); } } scanf ("%s", &op); } } return 0;}

  

转载于:https://www.cnblogs.com/Running-Time/p/4795710.html

你可能感兴趣的文章
POJ - 3041 Asteroids 【二分图匹配】
查看>>
luogu P4198 楼房重建——线段树
查看>>
使用property为类中的数据添加行为
查看>>
程序设计基础知识
查看>>
复变函数与积分变换
查看>>
12. 断点续传的原理
查看>>
C#基础:多态:基类可以定义并实现虚(virtual)方法,派生类可以重写(override)这些方法...
查看>>
Visifire图表
查看>>
python常用模块之paramiko与ssh
查看>>
AES算法在Python中的使用
查看>>
动手动脑3
查看>>
HDU 3397 Sequence operation(线段树区间染色加区间合并)
查看>>
【随笔】写下现在所想的,开始写博客
查看>>
linux命令之vi文本编辑器
查看>>
WPF-WrapPanel
查看>>
大家好
查看>>
iOS 疑难杂症 — — UITableView 添加 tableFooterView 旋转屏幕后收不到点击事件!!!...
查看>>
asp.net 8 Request,Response,Server
查看>>
Windows API 技巧集
查看>>
Java基础 - 流程控制语句
查看>>