码迷,mamicode.com
首页 > 其他好文 > 详细

poj-2259 team queue(数据结构)

时间:2018-04-04 23:42:03      阅读:312      评论:0      收藏:0      [点我收藏+]

标签:pos   ips   cst   sizeof   stream   ==   blog   tip   pre   

第一遍看的时候立即想到了哈希表。

再想时觉得两个队列,一个用来排队伍之间的顺序,一个用来排队伍内部成员的顺序即足够了。

DEQUE的时候先判断哪只队伍排在队首,之后再让该队伍中的首队员出列。

整体没有什么难度,注意的一些小tips如下:

1、多个测试用例一定注意先初始化(因为这个wa了两次。。呃呃)

2、判断是否需要进行队伍排序可以另立一个flag数组用来标记某支队伍是否已经在队列中,若不在则插入该队伍序号。

3、别忘了按要求输出(最后空一行,否则就PE了)

ac代码如下:

#include<iostream> 
#include<cstdio> 
#include<cstdlib>
#include<queue>
#include<map>
#include<cstring>
using namespace std;
const int maxn=1005;
queue<int> pno[maxn];//各个team内部排序 
queue<int> tno;//team排序
int teamflg[maxn];
int main(void) {
    int t;
    map<int,int> pt;//队伍与人 
    int se=0;
    while(scanf("%d",&t)&&t){
        //初始化 (一开始忘了这茬,wa了两次。。。) 
        memset(teamflg,0,sizeof(teamflg));
        while(tno.empty()==0)tno.pop();
        for(int i=0;i<maxn;i++){
            if(pno[i].empty()==0){
                while(pno[i].empty()==0)pno[i].pop();
            }    
        }
        printf("Scenario #%d\n",++se);
        for(int i=0;i<t;i++){
            int num;
            cin>>num;
            for(int j=0;j<num;j++){
                int person;
                cin>>person;
                pt[person]=i;
            }
        }
        string op;
        
        while(true){
            cin>>op;
            if(op[0]==S)break;
            else if(op[0]==E){
                int p;
                cin>>p;
                int team=pt[p];
                pno[team].push(p);
                if(teamflg[team]==0){
                    tno.push(team);
                    teamflg[team]=1;
                }
            }
            else if(op[0]==D){
                int team=tno.front();
                int out=pno[team].front();
                pno[team].pop();
                printf("%d\n",out);
                if(pno[team].empty()==1){
                    tno.pop();
                    teamflg[team]=0;
                }
            }
        }
        cout<<endl;
    }
    return 0;
}

 

poj-2259 team queue(数据结构)

标签:pos   ips   cst   sizeof   stream   ==   blog   tip   pre   

原文地址:https://www.cnblogs.com/KYSpring/p/8719361.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!