【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; }