E43【模板】单调队列优化DP 烽火传递

451 单调队列优化DP 烽火传递_哔哩哔哩_bilibili

 

E11【模板】单调队列 滑动窗口最值 - 董晓 - 博客园 (cnblogs.com)

T557186 烽火传递 - 洛谷

U162964 烽火传递 - 洛谷

// 单调队列+DP O(n)
#include<bits/stdc++.h>
using namespace std;

const int N=200010;
int n,m,a[N];
int q[N],f[N];

int main(){
  cin>>n>>m;
  for(int i=1; i<=n; i++) cin>>a[i];
  
  int ans=2e9;
  for(int i=1,h=1,t=0; i<=n; i++){
    while(h<=t && q[h]<i-m) h++;
    while(h<=t && f[q[t]]>=f[i-1]) t--;
    q[++t]=i-1;
    f[i]=f[q[h]]+a[i];
    if(i>=n-m+1) ans=min(ans,f[i]);
  }
  cout<<ans;
}

 

posted @ 2023-04-23 14:56  董晓  阅读(599)  评论(0)    收藏  举报