斜率优化小结

written on 2022-07-08

例题集合

斜率优化 dp 的解题步骤:

  1. 写出暴力的dp转移式。

  2. 如果发现有与 \(i\) 有关的 和 与 \(j\) 有关的代数式相乘的形式,那么考虑斜率优化。

  3. 将原式化为 \(b=kx+y\) 的形式,其中 \(b,k\)\(i\)(即当前研究对象)有关,\(x,y\)\(j\) 有关。

  4. 进一步移项,化为 \(y=-kx+b\) 的形式,那么此时该直线经过点 \(x,y\),为了求 \(b\) 的最大/最小值,维护上凸包或是下凸包,这点根据画图对应,用单调栈维护。注意此时 \(k\) 符号取反。

  5. 根据 \(k\) 的正负性以及 \(b\) 应取最大值还是最小值,找出 \(x,y\) 分别的单调性,然后先按 \(x\) 为第一关键字排序,然后排除较劣决策(也就是此时不符合 \(y\) 单调性的那些点)。

  6. 根据题目需要,用双指针或是二分找到第一个与询问的斜率为 \(k\) 的直线相切的部分,计算此时截距 \(b\),即为所求答案。

PS:记得对排序后的 \(x\) 去重。

posted @ 2022-07-31 22:06  Freshair_qprt  阅读(20)  评论(0编辑  收藏  举报