zoukankan      html  css  js  c++  java
  • 题解 P1420 【最长连号】

    这个题过去的同学可以再来一题(P1567 统计天数):
    https://www.luogu.org/problemnew/show/P1567
    是的,这个题其实也不是很难,就是前后比较,将天数压栈,
    然后对那些天数进行排序,十分的神奇...


    这个题可以用打擂台(stack/queue),但是我用的优先队列。
    优先队列是指大小根堆,但是应该是以队列方式存储的STL模板库。
    好处就是这个队列的根部(最顶端)是最大值,
    每个子节点也相对于第二层子节点是最大值,以此类推...
    优先队列自我维护!
    那么就有了下面的代码:

    #include <cstdio>
    #include <queue>
    //优先队列/queueのSTL模板库
    using namespace std;
    priority_queue<int>qwq;
    //大名鼎鼎的优先队列
    int main()
    {
        int n,input,former,later,count=1;
        scanf("%d",&n);
        scanf("%d",&former);
        later=former+1;
        for (int i=1;i<n;i++)
        {
            scanf("%d",&input);
            if (input!=later)
            {//不连号的话,就更新下一个要用的比较值,和统计count
                qwq.push(count);
                //更新之前先把之前的统计压进优先队列
                later=input+1,count=1;
            }
            else
            {//连号也更新
                count+=1,later+=1;
            }
        }
        qwq.push(count);//防毒瘤数据1
        printf("%d",qwq.top());//输出最顶端数据
        return 0;
    }
    

    优先队列是一个好东西,感兴趣的童鞋可以用他再来几个题!

  • 相关阅读:
    python之并发编程
    python之并发编程(理论部分)
    python之网络部分
    python之异常处理
    py之包和日志
    mysql之general log 日志
    python之代码规范
    文件权限管理命令chmod,chown与文本搜索命令grep
    Linux用户与组管理命令
    Linux常见文件管理命令
  • 原文地址:https://www.cnblogs.com/jelly123/p/10385942.html
Copyright © 2011-2022 走看看