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