尺取法
作者:互联网
(传送门)[https://vjudge.net/contest/320030#problem/A]
#include <iostream>
#include <cstdio>
#define ll long long
#define INF 0x3f3f3f3f
using namespace std;
const int N=1e5+5;
int main(){
int t,s,n;
cin>>t;
int a[N];
while(t--){
cin>>n>>s;
for(int i=0;i<n;i++){scanf("%d",&a[i]);}
int st=0,en=0;//下标,st表示起始位置,en表示结束位置
int ans=INF,sum=0;//ans表示答案,sum表示当前
while(1){
while(en<n&&sum<s)sum+=a[en++];
if(sum<s)break;
ans=min(ans,en-st);
sum-=a[st++];
}
if(ans==INF)ans=0;
printf("%d\n",ans);
}
return 0;
}
标签:int,cin,long,传送门,取法,include,define 来源: https://www.cnblogs.com/Emcikem/p/11429280.html