zoukankan      html  css  js  c++  java
  • BC#86 1003NanoApe Loves Sequence Ⅱ[two-pointer]

    NanoApe Loves Sequence Ⅱ

     
     Accepts: 374
     
     Submissions: 946
     Time Limit: 4000/2000 MS (Java/Others)
     
     Memory Limit: 262144/131072 K (Java/Others)
    问题描述
    退役狗 NanoApe 滚回去学文化课啦!
    
    在数学课上,NanoApe 心痒痒又玩起了数列。他在纸上随便写了一个长度为 nn 的数列,他又根据心情写下了一个数 mm。
    
    他想知道这个数列中有多少个区间里的第 kk 大的数不小于 mm,当然首先这个区间必须至少要有 kk 个数啦。
    输入描述
    第一行为一个正整数 TT,表示数据组数。
    
    每组数据的第一行为三个整数 nmkn,m,k。
    
    第二行为 nn 个整数 AiAi​​,表示这个数列。
    
    1T10 2n200000 1kn/2 1mAi1091T10, 2n200000, 1kn/2, 1m,Ai​​109​​
    输出描述
    对于每组数据输出一行一个数表示答案。
    输入样例
    1
    7 4 2
    4 2 7 7 6 5 1
    输出样例
    18

    才知道原来有two-pointer这个名字

    >=m的数为1,其他为0,那么就是求有多少个区间和>=k

    滑动窗口,i是头,p是尾

    //
    //  main.cpp
    //  bc86-1003
    //
    //  Created by Candy on 10/1/16.
    //  Copyright © 2016 Candy. All rights reserved.
    //
    
    #include <iostream>
    #include <cstdio>
    #include <algorithm>
    #include <cstring>
    #include <vector>
    #include <string>
    using namespace std;
    const int N=2e5+5;
    inline int read(){
        char c=getchar();int x=0,f=1;
        while(c<'0'||c>'9'){if(c=='-')f=-1;c=getchar();}
        while(c>='0'&&c<='9'){x=x*10+c-'0';c=getchar();}
        return x;
    }
    int T,n,m,k,a[N];
    int main(int argc, const char * argv[]) {
        T=read();
        while(T--){
            n=read();m=read();k=read();
            for(int i=1;i<=n;i++){a[i]=read();a[i]=a[i]>=m?1:0;}
            int cnt=0,p=1;
            long long ans=0;
            for(int i=1;i<=n-k+1;i++){
                while(cnt<k&&p<=n)
                    cnt+=a[p++];
                if(cnt>=k) ans+=(long long)(n-p+1+1);//p already add 1
                cnt-=a[i];
            }
            printf("%lld
    ",ans);
        }
        
        return 0;
    }
  • 相关阅读:
    Notes of Daily Scrum Meeting(12.18)
    Notes of Daily Scrum Meeting(12.17)
    Notes of Daily Scrum Meeting(12.16)
    Notes of Daily Scrum Meeting(12.8)
    Notes of Daily Scrum Meeting(12.5)
    Notes of Daily Scrum Meeting(12.3)
    Notes of Daily Scrum Meeting(11.12)
    Linux中profile、bashrc、bash_profile之间的区别和联系
    Linux GCC编译
    mysql 5.7.16 远程连接
  • 原文地址:https://www.cnblogs.com/candy99/p/5926165.html
Copyright © 2011-2022 走看看