zoukankan      html  css  js  c++  java
  • hdoj5806【尺取】

    (补题,妈蛋那时候大哥给我说是尺取,我不想打…真是艾斯比了…)
    题意:
    退役狗 NanoApe 滚回去学文化课啦!

    在数学课上,NanoApe 心痒痒又玩起了数列。他在纸上随便写了一个长度为 n 的数列,他又根据心情写下了一个数 m。

    他想知道这个数列中有多少个区间里的第 k 大的数不小于 m,当然首先这个区间必须至少要有 k个数啦。

    思路:
    首先就是大于m阿,然后,然后再去判断一下在区间内的大于m个的数有没有大于k,大于的话就保证这个区间包括后面所有都可以满足题目条件。。很水的尺取。。。
    贴一发挫code…….

    #include <iostream>
    #include <cstdio>
    #include<vector>
    #include <cstring>
    #include <algorithm>
    using namespace std;
    typedef long long LL;
    
    const int N=2e5+10;
    int a[N];
    int s,e,cnt;
    int n,m,k;
    
    int main()
    {
        int t;
        scanf("%d",&t);
        while(t--)
        {
            scanf("%d%d%d",&n,&m,&k);
            for(int i=1;i<=n;i++)
                scanf("%d",&a[i]);
    
            LL ans=0;
            cnt=e=0;
    
            for(s=1;s<=n;s++)
            {
                while(cnt<k&&e<=n)
                {
                    if(a[++e]>=m)
                        cnt++;
                }
                if(cnt>=k)
                    ans+=n-e+1;
                if(a[s]>=m)
                    --cnt;
            }
            printf("%lld
    ",ans);
        }
        return 0;
    }

    ​​

  • 相关阅读:
    分治6--循环比赛日程表
    分治5--一元三次方程求解
    分治4--快速排序
    分治3--黑白棋子的移动
    分治2--取余运算
    分治1--二分查找
    贪心6--整数区间
    贪心5--活动选择
    贪心4--拦截导弹
    贪心3--删数问题
  • 原文地址:https://www.cnblogs.com/keyboarder-zsq/p/5934378.html
Copyright © 2011-2022 走看看