黄冈网站建设费用,青岛网站设计,做国外网站的公证要多少钱,插头 东莞网站建设Team Queue
luogu-UVA540
poj 2259
题目大意#xff1a;
有n个小组的人要排队#xff0c;每个小组中有若干个人#xff0c;当一个人入队时#xff0c;如果队中有自己小组的人就跟在此人后面#xff0c;否则站在队尾#xff0c;现在给出一些操作#xff0c;让你去操作…Team Queue
luogu-UVA540
poj 2259
题目大意
有n个小组的人要排队每个小组中有若干个人当一个人入队时如果队中有自己小组的人就跟在此人后面否则站在队尾现在给出一些操作让你去操作分别是 从队尾入队ENQUEUE 从对头出队DEQUEUE 结束当前数据STOP
样例输入
2
3 101 102 103
3 201 202 203
ENQUEUE 101
ENQUEUE 201
ENQUEUE 102
ENQUEUE 202
ENQUEUE 103
ENQUEUE 203
DEQUEUE
DEQUEUE
DEQUEUE
DEQUEUE
DEQUEUE
DEQUEUE
STOP
2
5 259001 259002 259003 259004 259005
6 260001 260002 260003 260004 260005 260006
ENQUEUE 259001
ENQUEUE 260001
ENQUEUE 259002
ENQUEUE 259003
ENQUEUE 259004
ENQUEUE 259005
DEQUEUE
DEQUEUE
ENQUEUE 260002
ENQUEUE 260003
DEQUEUE
DEQUEUE
DEQUEUE
DEQUEUE
STOP
0样例输出
Scenario #1
101
102
103
201
202
203Scenario #2
259001
259002
259003
259004
259005
260001数据范围
1lt;nlt;10001lt;nlt;10001n1000 人的编号是0到999999范围内的整数 一个团队最多可包含1000个人
解题思路
用n1个队列有1个是存小组其它n个是存小组内的人当某个人入队时就直接进他小组的队如果他进来之前小组没人入队那他所在的小组入队取出时也差不多就去第一个小组里面取最前面的
代码
#includequeue
#includecstdio
#includestring
#includecstring
#includeiostream
using namespace std;
int n,x,y,t,a[1000500];
string str;
int main()
{scanf(%d,n);while(n){printf(Scenario #%d\n,t);//输出第几组数据for (int i1;in;i){scanf(%d,x);for (int j1;jx;j){scanf(%d,y);a[y]i;//第y个人在第i小组}}queueintd[1001];//定义队列cinstr;while(str!STOP){if(strENQUEUE)//入队{scanf(%d,x);if (d[a[x]].empty())//如果小组没人那小组进队d[0].push(a[x]);d[a[x]].push(x);//如小组的队}else if(strDEQUEUE)//查询{xd[0].front();//最前面的小组yd[x].front();//最前面的人d[x].pop();if (d[x].empty())//如果小组空了那小组出队d[0].pop();printf(%d\n,y);//输出}cinstr;}putchar(10);scanf(%d,n); }
}