首页 > 其他 > 详细

POJ 2259 Team Queue(队列)

时间:2020-07-17 19:34:14      阅读:41      评论:0      收藏:0      [点我收藏+]

题目链接

解题思路

??这个题显然是用队列做的,但是单纯的一维队列无法解决这个问题,因为要涉及到插队问题,所以我们要用一个二维的队列来存储完成入队和出队操作,但是这样的话,我们无法得知每个队伍的先后顺序,所以我们还需要再用一个一维队列来存储小队的顺序。

代码

const int maxn = 1e3+10;
const int maxm = 1e6+10;
int id[maxm];
int main() {
    int t, kase = 1;
    while(~scanf("%d",&t) && t) {
        printf("Scenario #%d\n",kase++);
        queue<int> team, mr[maxn];
        int teamid = 0;
        while(t--) {
            ++teamid;
            int n; scanf("%d",&n);
            for (int i = 0,num; i<n; ++i)  {
                scanf("%d",&num);
                id[num] = teamid;
            }
        }
        char str[10];
        while(~scanf("%s",str) && str[0]!=‘S‘) {
            if (str[0]==‘E‘) {
                int num; scanf("%d",&num);
                if (mr[id[num]].empty()) {
                    team.push(id[num]);
                    mr[id[num]].push(num);
                }
                else mr[id[num]].push(num);
            }
            else if (str[0]==‘D‘) {
                printf("%d\n", mr[team.front()].front());
                mr[team.front()].pop();
                if (mr[team.front()].empty()) team.pop();
            }
        }
        putchar(endl);
    }
    return 0;
}

POJ 2259 Team Queue(队列)

原文:https://www.cnblogs.com/shuitiangong/p/13331614.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!