HDU5806 NanoApe Loves Sequence Ⅱ (BestCoder Round #86 C)二分
2016-08-07 21:58
309 查看
分析:大于等于m的变成1,否则变成0,预处理前缀和,枚举起点,找到第一个点前缀和大于m即可
找第一个点可以二分可以尺取
View Code
找第一个点可以二分可以尺取
#include <cstdio> #include <cstring> #include <cmath> #include <algorithm> using namespace std; typedef long long LL; const int N = 2e5+5; int T,n,m,k,a ,sum ; int main(){ scanf("%d",&T); while(T--){ scanf("%d%d%d",&n,&m,&k); for(int i=1;i<=n;++i){ scanf("%d",&a[i]); if(a[i]>=m)a[i]=1; else a[i]=0; } for(int i=1;i<=n;++i)sum[i]=sum[i-1]+a[i]; LL ret=0; for(int i=1;i<=n;++i){ if(n-i+1<k)break; if(sum -sum[i-1]<k)break; int l=i+k-1,r=n; while(l<r){ int mid=(l+r)>>1; if(sum[mid]-sum[i-1]>=k)r=mid; else l=mid+1; } int tmp=(l+r)>>1; ret+=(n-tmp+1); } printf("%I64d\n",ret); } return 0; }
View Code
相关文章推荐
- HDU5806 NanoApe Loves Sequence Ⅱ(二分ortwo-pointer)
- hdu5806 NanoApe Loves Sequence Ⅱ 前缀和 + 二分
- HDU5806 NanoApe Loves Sequence Ⅱ
- hdu 5086 NanoApe Loves Sequence 【二分查找】
- HDU5806 NanoApe Loves Sequence Ⅱ BestCoder Round #86 two-pointer
- HDU5806 NanoApe Loves Sequence Ⅱ(尺取法\two pointers)
- hdu5806:NanoApe Loves Sequence Ⅱ
- HDU5806 NanoApe Loves Sequence Ⅱ【尺取法+乘法原理】
- hdu 5806 NanoApe Loves Sequence Ⅱ(二分或尺取法)
- HUD-5806 NanoApe Loves Sequence Ⅱ(二分)
- HDU-5806 NanoApe Loves Sequence Ⅱ(two-pointer或二分)
- hdu NanoApe Loves Sequence Ⅱ
- HDU 5805 NanoApe Loves Sequence(ST 表 or 预处理)
- HDU-5806-NanoApe Loves Sequence Ⅱ-DP+队列维护
- HDU - 5806 - NanoApe Loves Sequence Ⅱ 【思维尺取】
- 【HDU】5806 - NanoApe Loves Sequence Ⅱ(尺取法)
- HDU 5805 NanoApe Loves Sequence(水~)
- HDU-5806-NanoApeLovesSequenceⅡ(尺取法)
- NanoApe Loves Sequence(求最大值的期望)
- HDU 5806 NanoApe Loves Sequence Ⅱ(尺取法)