引入
斜率优化,是单调队列优化的一个进阶版本,为了更好地理解,先来回顾一下单调队列吧~
所谓单调队列优化,就是对于形如:
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 dpi=dp
斜率优化与动态规划

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

被折叠的 条评论
为什么被折叠?



