队列"/>
POJ 2259 队列
题意
传送门 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 #%d\n", ++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("%d\n", team[k].front());team[k].pop();if (team[k].empty())used.pop();}}puts("");}return 0;
}
更多推荐
POJ 2259 队列
发布评论