POJ 3016 尺取法。
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <iostream>
using namespace std;
int a[100000+9];
int main()
{
int t,n,s;
while(~scanf("%d",&t))
{
while(t--)
{
scanf("%d%d",&n,&s);
for(int i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
int st=0;
int ans;
int sum=0;
int Min=0xffffff;
for(int i=0;i<n;i++)
{
sum+=a[i];
if(sum>s)
{
while(sum>=s)
{
ans=i-st+1;
sum-=a[st];
st++;
}
if(ans<Min)
{
Min=ans;
}
}
}
if(Min==0xffffff)
{
Min=0;
}
printf("%d\n",Min);
}
}
return 0;
}