概述
题意
传送门 POJ 2259 Team Queue
题解
用 1 1 1 个队列维护已在队中的小组索引,用 t t t 个队列维护各个小组在队中的元素,就能够 O ( 1 ) O(1) O(1) 时间处理各个操作。
#include <algorithm>
#include <cstdio>
#include <queue>
using namespace std;
const int maxn = 1000005, maxt = 1005;
int id[maxn];
queue<int> used, team[maxt];
int main()
{
int t, c = 0;
while (~scanf("%d", &t) && t)
{
printf("Scenario #%dn", ++c);
while (used.size())
used.pop();
for (int i = 0; i < t; ++i)
{
while (team[i].size())
team[i].pop();
int n, x;
scanf("%d", &n);
for (int j = 0; j < n; ++j)
{
scanf("%d", &x);
id[x] = i;
}
}
char op[10];
while (~scanf(" %s", op) && op[0] != 'S')
{
int x, k;
switch (op[0])
{
case 'E':
scanf("%d", &x);
k = id[x];
if (team[k].empty())
used.push(k);
team[k].push(x);
continue;
case 'D':
k = used.front();
printf("%dn", team[k].front());
team[k].pop();
if (team[k].empty())
used.pop();
}
}
puts("");
}
return 0;
}
最后
以上就是娇气黑裤为你收集整理的POJ 2259 队列的全部内容,希望文章能够帮你解决POJ 2259 队列所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复