标签:Queue int DEQUEUE queue ENQUEUE tm rg 2259 team
题解
开两个队列 , 一个是队编号的队列 , 另一个是每队成员的队列
读入数据的同时标记 此人的团队号
每次模拟入队出队即可 , 需要注意的是 每次**团队成员**入队出队的时候还需要考虑
**团队成员的团队号** 是否为空
代码
#include <bits/stdc++.h>
using namespace std ;
#define rg register
typedef long long ll ;
int main ( ) { freopen( "F:\\in\\quque.txt" , "r" , stdin ) ;
int T , t , pep ;
string s ;
map<int,int> team ;
rg int cas = 0 ;
while ( cin >> T &&T!=0) {
team.clear() ;
cout << "Scenario #" << ++cas << endl ;
for ( rg int i = 0 ; i < T ; ++i ) {
cin >> pep ;
while ( pep-- ) {
cin >> t ;
team[t] = i ; // 标记每个人的 团体号
}
}
queue<int> qt ; // 团体
queue<int> q[1000+10] ; // 团员
while ( cin >> s &&s != "STOP") {
if ( s == "ENQUEUE" ) {
cin >> t ;
rg int tm = team[t] ; // 此人的团队号
q[tm].push( t ) ;
if ( q[tm].empty() )
qt.push( tm ) ;
}
else if ( s == "DEQUEUE" ) {
rg int tm = qt.front() ;
cout << q[tm].front() << endl ;
q[tm].pop() ;
if ( q[tm].empty() )
qt.pop() ;
}
}
cout << endl ;
}
return 0 ;
}
题目
样例输入
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
203
Scenario #2
259001
259002
259003
259004
259005
260001
标签:Queue,int,DEQUEUE,queue,ENQUEUE,tm,rg,2259,team 来源: https://blog.csdn.net/weixin_44510468/article/details/96496094
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。