您的位置:首页 > 其它

zoj3123题解

2016-05-15 22:44 225 查看
本来实在二分分类找到这道题的,就直接用二分做,时间1001ms,tle了,限时是1000ms,一直想水过。结果只能放弃二分,其实很简单。。。。。。

#include <stdio.h>
int N,S,arr[100000];
int main(void)
{
int T,i,sum,current,mil;
scanf("%d",&T);
while(T--)
{
current=0;
scanf("%d %d",&N,&S);
for(i=0;i<N;i++)
scanf("%d",arr+i);
sum=current=i=0;
mil=N;
while(i<N||sum>=S)
{
if(sum>=S){
sum-=arr[current++];
if(i-current+1<mil)
mil=i-current+1;
}
else    sum+=arr[i++];
}
if(current) printf("%d\n",mil );
else printf("0\n");
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: