小组队列

Posted hhyx

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了小组队列相关的知识,希望对你有一定的参考价值。

# 题意
n个小组要排队,每个小组中有若干人。
当一个人来到队列时,如果队列中已经有了自己小组的成员,他就直接插队排在自己小组成员的后面,否则就站在队伍的最后面。模拟。

# 题解
一个队列储存所有小组,
n个队列储存所有小组的队员
每次一个人入队如果小组队列中已经存在,就在当前小组后面,
如果还没有就在储存小组编号的队列后面插入当前小组

 1 #include <iostream>
 2 #include <queue>
 3 using namespace std;
 4 const int N=1010;
 5 char op[10];
 6 int c[1000010],cnt=1;
 7 int x;
 8 int n;
 9 int main(){
10    while(cin>>n&&n){
11       queue<int>code,p[N];
12       for (int i = 1; i <=n ; ++i) {
13          int k;
14          scanf("%d",&k);
15          for (int j = 1; j <=k ; ++j) {
16             scanf("%d",&x);
17             c[x]=i;
18          }
19       }
20       printf("Scenario #%d
",cnt++);
21       while(~scanf("%s",op)&&op[0]!=S){
22          if(op[0]==E){
23             scanf("%d",&x);
24             if(!p[c[x]].size())
25                code.push(c[x]);
26             p[c[x]].push(x);
27          }
28          else{
29             x=code.front();
30             printf("%d
",p[x].front());
31             p[x].pop();
32             if(!p[x].size())
33                code.pop();
34          }
35       }
36       puts("");
37    }
38    return 0;
39 }

 

以上是关于小组队列的主要内容,如果未能解决你的问题,请参考以下文章

# Java 常用代码片段

132. 小组队列队列 模拟

P2776 [SDOI2007]小组队列

luogu P2776 [SDOI2007]小组队列

luogu P2776 [SDOI2007]小组队列

RabbitMQ五:生产者--队列--多消费者