【UVALive】2678 Subsequence(尺取法)

题目

传送门:QWQ

 

 

分析

一开始没看到都是正整数根本不会做。。。。。。

看到了就是水题了。(但还是sb WA了一发)

尺取法搞一搞

 

 

代码

#include <bits/stdc++.h>
using namespace std;
const int maxn = 100000 + 10;
int A[maxn], B[maxn];
int main(){
    int n,s;
    while(scanf("%d%d",&n,&s)==2){
        for(int i=1;i<=n;i++) scanf("%d",&A[i]);
        B[0]=0; for(int i=1;i<=n;i++) B[i]=B[i-1]+A[i];
        int ans=n+1;
        int R=1;
        for(int L=1;L<=n;L++){
            while(B[R]-B[L-1]<s && R<=n) R++; 
            if(R>n ) break;
            ans=min(ans,R-L+1);
        //    printf("======  %d %d\n",R,L);
        }
        printf("%d\n",ans==n+1?0:ans);
    }
    return 0;
}

 

 

 

 

posted @ 2018-06-25 16:21  noble_(noblex)  阅读(134)  评论(0编辑  收藏  举报
/* */