当前位置: 首页 > article >正文

力扣1425.带限制的子序列和

力扣1425.带限制的子序列和

  • 单调队列优化dp

    • f[i] 表示在数组的前 i 个数中进行选择,并且恰好选择了第 i 个数,可以得到的最大和
    • 状态转移:f[i] = max(max(f[j]) , 0) + nums[i];
    • 单调队列优化:储存前K个f[i],并且单调,便于找到最大的f[j]
      • 更新逻辑:当i > j时,如果f[i] >= f[j],说明f[i]更优
  •   class Solution {
      public:
          int constrainedSubsetSum(vector<int>& nums, int k) {
              int n = nums.size();
              vector<int> f(n);
              //初始化
              f[0] = nums[0];
              deque<int> q;
              q.push_back(0);
              int ans = nums[0];
              for(int i=1;i<n;i++)
              {
                  //弹出出界元素
                  while(!q.empty() && i - q.front() > k)
                      q.pop_front();
                  //更新f[i]
                  f[i] = max(f[q.front()],0) + nums[i];
                  ans = max(ans,f[i]);
                  //更新单调队列
                  while(!q.empty() && f[i] >= f[q.back()])
                      q.pop_back();
                  q.push_back(i);
              }
              return ans;
          }
      };
    

http://www.kler.cn/a/287806.html

相关文章:

  • [ACTF2020]Upload 1--详细解析
  • HBase压测 ycsb
  • 整数唯一分解定理
  • 逆向攻防世界CTF系列37-crackme
  • 小白进!QMK 键盘新手入门指南
  • Python教程笔记(2)
  • 【初学人工智能原理】【13】LSTM网络:自然语言处理实践
  • 【系统架构设计师-2013年】综合知识-答案及详解
  • 使用Vuetify构建优雅的Vue.js应用
  • 3134. 找出唯一性数组的中位数(24.8.27)
  • 基于 OpenCV 的数字图像处理实验平台设计
  • MyBatis 源码解析:Configuration 对象的生成与初始化
  • 三台机器,第一台机器可以ssh到第二台机器,第二台机器可以ssh到第三台机器,请问第一台机器上怎么通过ssh 直接从第三台机器scp文件到第一台机器?
  • 树数据结构(Tree Data Structures)的全面指南:深度解析、算法实战与应用案例
  • 【WPF】WPF学习之【一】基础知识
  • 62.一个机器人位于一个 m x n 网格的左上角 。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角。实现一个算法计算路径的数量
  • 计算机毕业设计python停车场车位推荐管理系统y4uzk
  • “JavaScript里的多线程“WebWorker
  • scikit-learn:一个强大的机器学习Python库
  • APO选择ClickHouse存储Trace的考量
  • 代理IP的API接口:轻松实现自动化代理切换
  • 《软件工程导论》(第6版)第3章 需求分析 复习笔记
  • 同样128个内核,AMD霄龙9755性能翻倍:Zen 5架构下的性能飞跃
  • 【嵌入式学习笔记】STM32中断配置及相关知识
  • Go语言学习(一)
  • SpringBoot链路追踪②:如何集成?