zoukankan      html  css  js  c++  java
  • hackerrank:Almost sorted interval

    题目链接:https://www.hackerrank.com/challenges/almost-sorted-interval

    题目大意:

    定义一个“几乎单调”区间(区间最小值在最左面,最大值在最右面)

    给一个N的排列,求“几乎单调”区间的个数

    N=100W  解法为O(n)

    很好的思维题!

    想了一下午,其实自己离正解已经不远了,,不过最后还是看了学长的ac代码

    然后基本上秒懂了

    具体思维方式不好说啊。。贴个代码,以后又不会了的话慢慢回忆吧= =||

    #include <iostream>
    #include <stdio.h>
    #include<string.h>
    #include<algorithm>
    #include<string>
    #include<ctype.h>
    #include<queue>
    using namespace std;
    #define MAXN 10000
    deque<int> qinc;
    deque<int> qdec;
    int a[1000010];
    int num[1000010];
    int main()
    {
        int n;
        scanf("%d",&n);
        for(int i=1;i<=n;i++)
        {
            num[i]=1;
        }
        long long ans=0;
        for(int i=0;i<n;i++)
        {
            scanf("%d",a+i);
        }
        for(int i=0;i<n;i++)
        {
            if(qinc.empty())
            {
                qinc.push_back(a[i]);
            }
            else
            {
                int tmp=qinc.back();
                while(tmp>a[i])
                {
                    num[qdec.back()]--;
                    if(num[qdec.back()]==0)
                        qdec.pop_back();
                    qinc.pop_back();
                    if(qinc.empty())
                        break;
                    tmp=qinc.back();
                }
                qinc.push_back(a[i]);
            }
            if(qdec.empty())
            {
                qdec.push_back(a[i]);
                ans++;
                continue;
            }
            int tmp=qdec.back();
            while(tmp<a[i])
            {
                num[a[i]]+=num[tmp];
                qdec.pop_back();
                if(qdec.empty())
                    break;
                tmp=qdec.back();
            }
            ans+=num[a[i]];
            qdec.push_back(a[i]);
        }
        cout<<ans<<endl;
        return 0;
    }
  • 相关阅读:
    delphi 滚屏
    delphi Sender和Tag的用法
    delphi res 字符串资源
    delphi queryCommandState
    net图片转格式
    递归数据树结构
    C# winform文件批量转编码 选择文件夹
    SQL可重复执行语句,增删改字段、表、修改默认值
    WEBAPI测试
    调用webservice
  • 原文地址:https://www.cnblogs.com/oneshot/p/4152020.html
Copyright © 2011-2022 走看看