题目:点击打开链接
题意:
子序列加起来大于s,求最小子序列长度。
#include<iostream>
using namespace std;
typedef long long ll;
const int maxn=1e5+30;
const int inf=0x3f3f3f3f;
int a[maxn],b[maxn];
int main(){
int t;
cin>>t;
while(t--){
ll n,s;
cin>>n>>s;
for(int i=0;i<n;i++)
cin>>a[i];
int l=0,r=-1;
ll tmp=-1;
int ans=inf;
while(1){
if(l==n-1||r==n-1&&tmp<s)
break;
if(tmp<s){
r++;
tmp+=a[r];
}
else{
ans=min(ans,r-l+1);
tmp-=a[l];
l++;
}
}
if(ans==inf) ans=0;
cout<<ans<<endl;
}
return 0;
}