【poj3061】Subsequence

来源:互联网 发布:c语言node类型 编辑:程序博客网 时间:2024/05/29 18:39

【题目大意】

给定长度微n的数列整数及整数s。求出总和不小于s的连续子序列的长度的最小值。如果节不存在,则输出0。

思路:sum<s,r右移;sum>s,l右移

#include<iostream>#include<algorithm>#include<cstdio>#include<cmath>#include<set>#include<map>typedef long long LL;int a[100005];using namespace std;int main(){    int t,n,m,i;    cin>>t;    while(t--)    {        scanf("%d%d",&n,&m);        for(i=1; i<=n; i++)            scanf("%d",&a[i]);        int l=1,r=1,ans=1e9,sum=0;        while(1)        {            while(r<=n&&sum<=m) sum+=a[r++];            if(sum<m) break;            ans=min(ans,r-l);            sum-=a[l++];        }        if(ans==1e9) ans=0;        printf("%d\n",ans);    }    return 0;}


原创粉丝点击