动态规划(算法竞赛、蓝桥杯)--单调队列优化绿色通道

1、B站视频链接:E45 单调队列优化DP 绿色通道_哔哩哔哩_bilibili

cpp 复制代码
#include <bits/stdc++.h> 
using namespace std;
const int N=5e4+10;
int n,tim,w[N],f[N],q[N];

bool check(int m){
  int h=1,t=0;
  for(int i=1; i<=n; i++){
    while(h<=t && f[q[t]]>=f[i-1]) t--;
    q[++t]=i-1;
    if(q[h]<i-m) h++;
    f[i]=f[q[h]]+w[i];
    if(i>n-m && f[i]<=tim) return 1;//r指针左移 
  }
  return 0;
}
int main(){
  cin>>n>>tim;
  for(int i=1;i<=n;i++) cin>>w[i];
  int l=-1,r=n+1;
  while(l+1<r){
    int mid=l+r>>1;
    if(check(mid)) r=mid;
    else l=mid;
  }
  cout<<r-1; //空题段长度
}
相关推荐
砚边数影2 分钟前
逻辑回归实战(二):Java + DL4J 实现模型,评估指标(准确率/召回率)计算
java·数据库·算法·机器学习·逻辑回归·金仓数据库
Cher ~3 分钟前
【数据结构】hash表(unordered_map)
java·数据结构·c++·算法·哈希算法
一起养小猫4 分钟前
Flutter for OpenHarmony 实战:食物生成算法与难度递增系统
算法·flutter
u01092727112 分钟前
自定义类型转换机制
开发语言·c++·算法
hetao173383712 分钟前
2026-01-27 hetao1733837 的刷题笔记
c++·笔记·算法
Tisfy24 分钟前
LeetCode 3650.边反转的最小路径总成本:Dijkstra算法
算法·leetcode··dijkstra·题解·迪杰斯特拉
2401_8384725126 分钟前
自定义操作符重载指南
开发语言·c++·算法
鹿角片ljp32 分钟前
力扣136.只出现一次的数字-异或和HashMap
java·数据结构·算法·leetcode
W_a_i_T32 分钟前
【Coding日记】菜鸟编程C语言100例——第三题⚠️
c语言·开发语言·经验分享·算法·菜鸟编程
TracyCoder12334 分钟前
LeetCode Hot100(5/100)——11. 盛最多水的容器
算法·leetcode