zoukankan      html  css  js  c++  java
  • 最大子序和

    题目描述

    输入一个长度为n的整数序列,从中找出一段不超过m的连续子序列,使得整个序列的和最大。

    例如 1,-3,5,1,-2,3

    当m=4时,S=5+1-2+3=7
    当m=2或m=3时,S=5+1=6

    输入

    第一行两个数n,m(n,m<=300000)
    第二行有n个数,要求在n个数找到最大子序和

    输出

    一个数,数出他们的最大子序和

    样例输入

    6 4
    1 -3 5 1 -2 3

    样例输出

    7

    #include <iostream>
    #include <string>
    #include <cstdio>
    #include <cmath>
    #include <cstring>
    #include <algorithm>
    #include <vector>
    #include <queue>
    #include <deque>
    #include <map>
    #define range(i,a,b) for(int i=a;i<=b;++i)
    #define LL long long
    #define rerange(i,a,b) for(int i=a;i>=b;--i)
    #define fill(arr,tmp) memset(arr,tmp,sizeof(arr))
    using namespace std;
    int n,m,ans,ss[300005],qq[300005];
    void init() {
        cin>>n>>m;
        range(i,1,n){
            cin>>ss[i];
            ss[i]+=ss[i-1];
        }
    }
    void solve(){
        int front=1,tail=1;
        range(i,1,n){
            if(i-qq[front]>m)front++;
            ans=max(ans,ss[i]-ss[qq[front]]);
            while(front<=tail&&ss[qq[tail]]>=ss[i])tail--;
            tail++;
            qq[tail]=i;
        }
        cout<<ans<<endl;
    }
    int main() {
        init();
        solve();
        return 0;
    }
    View Code
  • 相关阅读:
    log4net插入access自定义字段
    前端规范
    烤冷面项目进度文档
    响应式布局及bootstrap(实例)
    HTML嵌套规则
    前端规范2-CSS规范
    前端规范1-HTML规范
    入驻博客园
    .net中运用solr提升搜索效率(入门)
    .net 使用validator做数据校验
  • 原文地址:https://www.cnblogs.com/Rhythm-/p/9336411.html
Copyright © 2011-2022 走看看