POJ_2259 Team Queue ( queue 的应用 )

题解

	开两个队列 , 一个是队编号的队列 , 另一个是每队成员的队列 
	读入数据的同时标记 此人的团队号 
	每次模拟入队出队即可 , 需要注意的是 每次**团队成员**入队出队的时候还需要考虑 
**团队成员的团队号** 是否为空  

代码

#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 ; 
} 

题目

POJ_2259 Team Queue ( queue 的应用 )

	样例输入

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

上一篇:js判断域名跳转-判断用户来路域名实现不同来路到指定页面


下一篇:Eclipse 设置 SVN TEAM 同步 忽略文件或文件夹