团队队列 uva540
思路:
紫书
收获
原来队列还可以这样用,对于每一个q2[i]都是一个队列
queue<int> q2[maxt];
Ac代码
#include <iostream>
#include<queue>
#include<map>
using namespace std;
const int maxt = 1000+9;
int main()
{
int t;
int cnt= 0;
while(cin>>t)//模拟有多少个队伍
{
if(!t) break;
map<int,int> team;//team[x] 代表队员x所在的队伍
for(int i=0;i<t;i++)
{
int n,x;//第i+1个队伍里有多少个人
cin>>n;
while(n--) {cin>>x ; team[x] = i; }
}
printf("Scenario #%d\n",++cnt);
queue<int> q1,q2[maxt];//一定要定义在while 循环外面
while(1)
{
//第一个代表的是团队编号的队列
//第二个代表每一个团队里的人
string cmd;//command
cin>>cmd;
if(cmd[0]=='E')
{
int x;//队员
cin>>x;
int q = team[x];//代表这个队员所在的队伍编号
//队伍q还没有进长队
if(q2[q].empty()) q1.push(q);
q2[q].push(x);
}
else if(cmd[0]=='D')
{
int q = q1.front();
int ans = q2[q].front();
printf("%d\n",ans);
q2[q].pop();
//如果队伍q里面没人了
//那么直接把这个队伍编号从q1中弹出
if(q2[q].empty()) q1.pop();
}
else if(cmd[0]=='S') break;
}
cout<<endl;
}
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话