zoukankan      html  css  js  c++  java
  • 单调队列 I

    2009国家集训队徐持衡的论文《浅谈几类背包问题》里提到的一个经典问题:

    长度限制最大连续和问题:

      给出长度为 n 的序列 X i ,求这个序列中长度不超过 Lmax 的最大连续和。

    Implementation

    #include <bits/stdc++.h>
    using namespace std;
    const int N(1e5+5);
    typedef pair<int,int> P;
    P que[N];
    
    int main(){
        int n, l, ans=0, head=0, tail=0;
        scanf("%d%d", &n, &l);
        int s=0;
        que[tail++]={0, s};
        for(int i=1, a; i<=n; i++){
            scanf("%d", &a);
            s+=a;
            for(; head!=tail && que[head].first<=i-l; head++);
            for(; head!=tail && que[tail-1].second>=s; tail--);
            que[tail++]={i, s};
            ans=max(ans, s-que[head].second);
        }
        printf("%d
    ", ans);
    }
  • 相关阅读:
    博客
    参考博客
    KMP
    串匹配
    简单数论
    B
    各种常用函数的模板以及自己的测试数据
    header
    memcached的图形界面监控
    缓存策略
  • 原文地址:https://www.cnblogs.com/Patt/p/5011087.html
Copyright © 2011-2022 走看看