首页 > 其他分享 >关于斜率优化的一些理解

关于斜率优化的一些理解

时间:2025-01-08 10:57:46浏览次数:1  
标签:geq min 斜率 理解 dp 优化 单调

引入: 题目类型

对于这样的一类柿子

\[dp_i = \min_{j < i} (dp_j - a_i d_j) , a_{i + 1} \geq a_i, d_{j + 1} \geq d_j \]

朴素的单调队列显然无法优化, 考虑通过 斜率优化 将其转化成只与 \(j\) 有关的形式方便优化

操作: 具体原理

首先是一个转化
拆掉 \(\min\)

\[dp_i = dp_j - a_i d_j \]

得到

\[dp_j = dp_i + a_i d_j \]

令 \(y = dp_j\) , \(k = a_i\) , \(x = d_j\) , \(b = dp_i\) , 柿子变成一次函数的形式

\[y = kx + b \]

这里的转化需要满足如下性质
\(k\) 只与 \(i\) 有关, 单调递增
\(b\) 只与 \(i\) 有关, 且只有其包含 \(dp_i\)
\(x\) 只与 \(j\) 有关, 单调递增
\(y\) 只与 \(j\) 有关, 且只有其包含 \(dp_j\)

把 \(dp_i\) 看做未确定的变量, 问题转化为用一条斜率为 \(k\) 的直线去切一些决策点 \((x, y)\) , 求直线截距的最小值
容易发现维护下凸包之后, 找到斜率 \(< k , > k\) 的转折点即可

然后根据 \(k, x\) 的单调性, 你发现这个做法可以拓展到整个序列上, 复杂度 \(\mathcal{O} (n)\) , 结束

标签:geq,min,斜率,理解,dp,优化,单调
From: https://www.cnblogs.com/YzaCsp/p/18659199

相关文章

  • 如何通过数据分析优化电商营销策略和客户体验
    一、电商数据的收集电商平台的数据来源多样,包括用户行为数据、交易数据、客户反馈数据、商品信息数据等。高效的数据收集不仅是数据分析的前提,也是实现精准决策的基础。1.1数据收集的主要来源用户行为数据:用户在电商平台上的每一次点击、浏览、搜索、加入购物车、下单等行为,都......
  • 【GreatSQL优化器-09】make_join_query_block
    【GreatSQL优化器-09】make_join_query_block一、make_join_query_block介绍GreatSQL优化器对于多张表join的连接顺序在前面的章节介绍过的best_access_path函数已经执行了,接着就是把where条件进行切割然后推给合适的表。这个过程就是由函数make_join_query_block来执行的。下......
  • “Java岗八股文”2025版史上最新最全超详细易理解,面试必备(一)Spring篇
    Spring篇文章目录Spring篇1、Spring框架中的单例bean是线程安全的吗?2、什么是AOP,你们项目中有没有使用到AOP?3、Spring中的事务是如何实现的?4、什么是AOP5、你们项目中有没有使用到AOP6、Spring中的事务是如何实现的7、Spring中事务失效的场景有哪些8、Spring的bean的生......
  • 理解JAVA封装.继承.多态
    JAVA面向对象的三大特征:封装,继承,多态。1.封装(1)封装:将数据和操作数据的方法进行有机结合,隐藏对象的属性和实现的细节,仅通过公开的接口和对象交互。封装使类成为一个具有内部属性的有隐藏功能的代码模块。通俗的理解就是将类内部的一些属性和方法隐藏起来,屏蔽细节。(2)JAVA中......
  • 【Rust】从 Node.js 开发者的视角深入理解 Rust 的所有权与借用机制
    Rust的所有权(Ownership)与借用(Borrowing)机制是其区别于其他编程语言的核心特性,也是保障内存安全的重要基石。在本文中,我们将从熟悉Node.js的开发者视角出发,探讨Rust如何通过这些独特的设计实现高效可靠的内存管理,并对比JavaScript的垃圾回收机制,帮助您更容易理解这些概念。......
  • 回归预测 | Matlab实现SMA-BP黏菌算法优化BP神经网络多变量回归预测
    回归预测|Matlab实现SMA-BP黏菌算法优化BP神经网络多变量回归预测目录回归预测|Matlab实现SMA-BP黏菌算法优化BP神经网络多变量回归预测基本介绍程序设计参考资料......
  • 基于分块贝叶斯非局部均值优化(OBNLM)的图像去噪算法matlab仿真
    1.程序功能描述基于分块贝叶斯非局部均值优化(OBNLM)的图像去噪算法matlab仿真,对比不同的参数对OBNLM算法的影响。2.测试软件版本以及运行结果展示MATLAB2022A版本运行  3.核心程序Im0=imread('test.png');Blks1=3;Blks2=5;Blks3=7;Win......
  • 理解 Overlay2 的基本原理和使用方法
    1.介绍Overlay2的基本原理Overlay2是一种联合文件系统(UnionFilesystem),它允许将多个目录(称为层)合并成一个统一的视图。Overlay2的主要用途是在容器技术中,用于构建容器的文件系统。它的核心思想是通过将多个只读层和一个可写层叠加在一起,形成一个单一的文件系统视图。Overla......
  • 如何通过Python优化大语言模型的参数效率
    文章目录一、大语言模型参数效率优化的必要性1.1参数效率的重要性1.2优化技术的概述二、Python实现参数优化技术2.1模型压缩2.2模型剪枝2.3知识蒸馏2.4模型量化三、优化技术的技术细节3.1模型压缩技术3.2模型剪枝技术3.3知识蒸馏技术3.4模型量化技术四、参......
  • 自注意力self-attention理解(qkv计算、代码)
    1.自注意力的个人理解   self-attention中的核心便是qkv的计算,首先是将输入向量分别乘上三个可学习的的矩阵得到Query(查询)、Key(键)、Value(值);再将q和k点乘达到全局建模的作用,将qk结果进行softmax得到Attention分数;最后将Attention和v相乘这个操作我的理解是:可以把Val......