zoukankan      html  css  js  c++  java
  • luogu P2776 [SDOI2007]小组队列

    题目背景

    嘛,这道非常简单的给大家提供信心的省选题洛谷居然没有!

    这么简单的题怎么可以没有!

    给大家提升士气是义不容辞的责任!

    所以我就来补一下啦..

    值得一提的是,标程是我自己做的..

    很渣,因为数据很水所以能AC..

    大神勿喷..

    题目描述

    有 m 个小组, n 个元素,每个元素属于且仅属于一个小组。

    支持以下操作:

    push x:使元素 x 进队,如果前边有 x 所属小组的元素,x 会排到自己小组最后一个元素的下一个位置,否则 x 排到整个队列最后的位置。

    pop:出队,弹出队头并输出出队元素,出队的方式和普通队列相同,即排在前边的元素先出队。

    输入输出格式

    输入格式:

    第一行有两个正整数 n, m,分别表示元素个数和小组个数,元素和小组均从 0 开始编号。

    接下来一行 n 个非负整数 Ai,表示元素 i 所在的小组。

    接下来一行一个正整数 T ,表示操作数。

    接下来 T 行,每行为一个操作。

    输出格式:

    对于每个出队操作输出一行,为出队的元素。

    输入输出样例

    输入样例#1:
    4 2
    0 0 1 1
    6
    push 2
    push 0
    push 3
    pop
    pop
    pop
    输出样例#1:
    2
    3
    0

    说明

    对于30%的数据,1≤n≤100,1≤m≤10,T≤50。

    对于100%的数据,1≤n≤100000,1≤m≤300,T≤100000,输入保证操作合法。

    #include<iostream>
    #include<cstdio>
    #include<algorithm>
    #include<vector>
    #include<queue>
    
    using namespace std;
    const int N=310;
    
    queue<int>vec[N];
    int peo,group;
    int belong[99999];
    queue<int>comein;
    bool vis[N];
    string work;
    int me;
    
    int main()
    {
        scanf("%d%d",&peo,&group);
        for(int i=0;i<peo;i++)
            scanf("%d",&belong[i]);
        int Q;
        scanf("%d",&Q);
        while(Q--)
        {
            cin>>work;
            if(work[1]=='u')
            {
                scanf("%d",&me);
                int zu=belong[me];
                if(!vis[zu])
                {
                    comein.push(zu);
                    vec[zu].push(me);
                    vis[zu]=1;
                }
                else
                    vec[zu].push(me);
            }
            else
            {
                int xiaozu=comein.front();
                int cou=vec[xiaozu].front();
                printf("%d
    ",cou);
                vec[xiaozu].pop();
                if(vec[xiaozu].size()==0)
                    comein.pop(),vis[xiaozu]=0;
            }
        }
    
        return 0;
    }
  • 相关阅读:
    1130 host '***' is not allowed to connect to this MySQL server
    签名时出错,未能对....ext签名。SignTool Error: No certificates...
    C# 进制转换(二进制、十六进制、十进制互转)
    在安装32位Oracle客户端组建的情况下以64位模式运行
    Vue中引入jQuery
    sql server数据库分离时,数据库右侧显示(单个用户)
    解决Typora图片显示问题
    Ruby日文手册翻译1
    Boost Graph Library 库小结1
    归并排序
  • 原文地址:https://www.cnblogs.com/lyqlyq/p/7095616.html
Copyright © 2011-2022 走看看