Posted on 2009-08-27 16:36
Uriel 阅读(233)
评论(0) 编辑 收藏 引用 所属分类:
POJ 、
模拟
没什么特殊技巧,用了两个变量当游标用
/**//*Problem: 3061 User: Uriel
Memory: 524K Time: 79MS
Language: C++ Result: Accepted*/
#include<stdio.h>
int max,flag,i,x,y,n,sum,smx,num[100010],t;
int main()
{
scanf("%d",&t);
while(t--)
{
scanf("%d %d",&n,&sum);
for(i=0;i<n;i++)
{
scanf("%d",&num[i]);
}
x=0;
y=0;
flag=1;
max=100000;
smx=num[0];
while(y<n && x<=y)
{
if(smx<sum)
{
y++;
flag++;
smx+=num[y];
}
else if(smx>=sum)
{
if(max>flag)max=flag;
flag--;
x++;
smx-=num[x-1];
}
}
if(max==100000)max=0;
printf("%d\n",max);
}
return 0;
}