zoukankan      html  css  js  c++  java
  • [进阶指南] 最大子序和

    题意:

    给定 N个数的序列, 求一个长度不超过M的和最大子序列

    思路:

    单调队列优化DP,维护大小不超过M的前缀和递增队列

     1 #include <bits/stdc++.h>
     2 
     3 #define rep(i,x,y) for(int i=(x);i<=(y);++i)
     4 #define _max(a,b) (a)>(b)? (a):(b)
     5 #define _min(a,b) (a)<(b)? (a):(b)
     6 
     7 using namespace std;
     8 typedef long long ll;
     9 typedef pair<int,int> pii;
    10 typedef pair<ll,int> pli;
    11 typedef pair<int,ll> pil;
    12 typedef pair<ll,ll> pll;
    13 
    14 const int MAXN=3e5+10;
    15 int n,m;
    16 ll a[MAXN],pr[MAXN];
    17 
    18 int main(){
    19     cin>>n>>m;
    20     rep(i,1,n)  scanf("%lld",a+i),pr[i]=pr[i-1]+a[i];
    21     deque<int> q;
    22     ll mas=0;
    23     q.push_back(0);
    24     rep(i,1,n){
    25         while(!q.empty()&&i-q.front()>m){
    26             q.pop_front();
    27         }
    28         mas=max(mas,pr[i]-pr[q.front()]);
    29         while(!q.empty()&&pr[q.back()]>=pr[i]){
    30             q.pop_back();
    31         }
    32         q.emplace_back(i);
    33     }
    34     cout<<mas;
    35     return 0;
    36 }
    View Code
  • 相关阅读:
    HMM MEMM CRF 差别 联系
    JSTL简单介绍
    java基础&amp;&amp;高薪面试
    oracle-Normal
    oracle-Oradim
    oralce管理命令
    oracle默认日期格式
    oralce默认语言
    oracle国家字符集
    oracle-字符集
  • 原文地址:https://www.cnblogs.com/JNzH/p/13407312.html
Copyright © 2011-2022 走看看