zoukankan      html  css  js  c++  java
  • POJ3061——Subsequence(尺取法)

    Subsequence

    POJ - 3061

    给定长度为n的数列整数a0,a1,a2…an-1以及整数S。求出总和不小于S的连续子序列的长度的最小值,如果解不存在输出0。

    反复推进区间的开头和末尾,来求取满足条件的最小区间的方法称为取尺法。

    #include <cstdio>
    #include <iostream>
    #include <cmath>
    #include <algorithm>
    #include <string>
    #include <cstring>
    #include <vector>
    #include <queue>
    // #define _ ios::sync_with_stdio(false)
    // #define cin.tie(0)
    using namespace std;
    // #define rep(i,x,y) for(int i=x;i<y;i++)
    typedef long long ll;
    const int MAXN=2e5+5;
    int main()
    {
        int t,n,s;
        int a[MAXN];
        cin>>t;
        while(t--)
        {
            cin>>n>>s;
            for(int i=0;i<n;i++)
                cin>>a[i];
            int res=n+1;
            for(;;)
            {
                while(t<n&&sum<s)
                    sum+=a[t++];
                if(sum<s)
                    break;
                res=min(res,t-i);
                sum-=a[i++];
            }
            if(res>n)
                res=0;
            cout<<res<<endl;
        }
        return 0;
    }
  • 相关阅读:
    until循环
    linux的shell使用
    shell通配符(元字符)
    linu运算
    mail邮件
    linux命令
    redis笔记
    mysql 5.7安装方法
    mysql5.7.25搭建mysql-5.7.25.tar.gz包(亲验)
    mysql数据迁移
  • 原文地址:https://www.cnblogs.com/YingZhixin/p/7160972.html
Copyright © 2011-2022 走看看