yiwei

[学习笔记] 斜率优化

引入

斜率优化用于求解类似于 \(f_i = f_j + a_ib_j + c_i\) 使 \(f_i\) 最大或最小之类的形式的 DP 转移,标志就是其中有一项(如 \(a_ib_j\))与 \(i,j\) 均有关联。

求解

\(j\)\(i\) 的最优决策点,也就是 \(f_i = f_j + a_ib_j + c_i\),我们将其进行一些移项可以得到 \(f_j = - a_ib_j + f_i - c_i\)。发现这时的式子很像直线的表达式:\(y=kx+b\),其中 \(y = f_j,k = -a_i,x = b_j,b = f_i - c_i\)。那么我们的目的就是找到这样一条斜率为 \(-a_i\),过点 \((b_j,f_j)\) 的直线使得其截距尽可能大或者小。然后要做的就是观察斜率 \(k\) 的单调性,以及题目中要求的是最值情况,再考虑用单调队列还是单调栈维护上凸壳还是下凸壳。

image

image

posted @ 2024-08-01 18:46  _yiwei  阅读(9)  评论(0编辑  收藏  举报