• onecode第一届一码学程正式邀请赛B 排队找bug


    ## 10222 : 排队找bug ##

    时间限制: 1000 MS 内存限制: 131072 KB 提交总数: 125 AC总数: 24
    问题描述
    同学们的bug还真是多啊,orz…
    春节期间大家存下的bug都来找肖老师解决了。
    每个人都有bug,但是肖老师却只有一个啊。怎么办?
    所以肖老师让大家按先来后到的顺序排队,一个一个的给大家解决。
    这不一大早起来,肖老师就等着同学们过来解决bug了。不过肖老师偶尔想知道当前队伍中bug数量最少的是多少bug。
    sos xbug操作表示有一个同学有x个bug,并且过来排队等待肖老师解决。
    ok 操作表示肖老师已经解决了排在队伍最前面同学的所有bug。
    min 操作表示肖老师需要知道当前排队队伍中bug数量最少的是多少bug。
    输入格式
    第一行输入一个正整数n,表示总共有n总操作。
    接下来输入n行,每行一种操作。
    【限制条件】
    1≤n≤10^6
    每个人的bug数量不超过1000000。

    注意,数据大到用必须得用scanf,printf输入输出
    输出格式
    对于每一次min操作,输出当前排队中bug最少的数量。
    如果执行min(或者ok)操作时,当前队伍为空,则输出“So happy!no bug!”。
    样例输入
    7
    sos 6bug
    sos 7bug
    min
    ok
    min
    ok
    min
    样例输出
    6bug
    7bug
    So happy!no bug!


    #include<bits/stdc++.h>
    using namespace std;
    queue<int> que;  
    deque<int> minque;  
    deque<int> maxque;  
    void push(int val)  
    {  
        que.push(val);  
        while ((!minque.empty()) && (minque.back() > val))  
            minque.pop_back();  
        minque.push_back(val);  
        while ((!maxque.empty()) && (maxque.back() < val))  
            maxque.pop_back();  
        maxque.push_back(val);  
    }  
    void pop()  
    {  
        int value = que.front();  
        que.pop();  
        if (!minque.empty() && minque.front() == value)  
            minque.pop_front();  
        if (!maxque.empty() && maxque.front() == value)  
            maxque.pop_front();  
    }  
    int findmin()  
    {  
        return minque.front();  
    }  
    int findmax()  
    {  
        return maxque.front();  
    }  
    int main()
    {
        int n;
        scanf("%d",&n);
        while(n--)
        {
            char op[10];
            scanf("%s",op);
            int x;
            if(op[0]=='s') 
            {
                scanf("%dbug",&x);
                push(x);
            }
            else if(op[0]=='m')
            {
                if(que.size()==0 || minque.empty()) printf("So happy!no bug!
    ");
                else printf("%dbug
    ",findmin());
            }
            else 
            {
                if(que.size()==0 || minque.empty()) printf("So happy!no bug!
    ");
                else pop();
            }
        }
        return 0;
    }

  • 相关阅读:
    频繁FGC解决方案
    ThreadLocal
    Session与Cookie
    Socket通信流程
    SpringBoot面试题
    面向对象3大特性:封装、继承、多态——继承(继承方法的重写和初始化顺序、final & super关键字、Object类)
    面向对象3大特性:封装、继承、多态——封装(this 、访问修饰符、内部类)
    java类和对象、构造方法、静态变量、静态方法、静态初始化块
    数组的使用、eclipse调试程序、练习小demo以及方法的定义和重载
    java中的条件语句if...else... switch 和循环语句while do...while for
  • 原文地址:https://www.cnblogs.com/wuzetian/p/9900411.html
Copyright © 2020-2023  润新知