学习笔记——斜率优化 dp

本文介绍了斜率优化,这是单调队列优化的一种扩展,适用于处理包含i和j的dp公式。通过举例和图像解析,阐述了如何将dp式转换为斜率形式,并利用单调队列维护下凸包,实现O(1)的转移,从而解决动态规划问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

引入

斜率优化,是单调队列优化的一个进阶版本,为了更好地理解,先来回顾一下单调队列吧~

所谓单调队列优化,就是对于形如:
d p i = max ⁡ { d p j + a j } dp_i=\max\{dp_j+a_j\} dpi=max{ dpj+aj}
d p dp dp 式,我们把所有的 d p j + a j dp_j+a_j dpj+aj 放进单调队列里,实现 O ( 1 ) O(1) O(1) 的转移。

这个时候,只有在式子中,每一项只有关于 j j j 或者只有关于 i i i 的。但是如果有这样一个式子:
d p i = max ⁡ { d p j + a j × a i } dp_i=\max\{dp_j+a_j\times a_i\} dpi=max{ dpj+aj×ai}
这时候,我们就不能只考虑 a j a_j aj,因为对于每个 i i i,其大小都是不同的。

流程

我们先来看一道例题:[HNOI2008]玩具装箱

我们很容易得到原始的 d p dp dp 式子, c i c_i ci 是前缀和:
d p i = d p j + ( c i + i − c j − j − 1 − L ) 2 dp_i=dp_j+(c_i+i-c_j-j-1-L)^2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值