Loading

DP 优化 学习笔记

0 参考资料

1 斜率优化

1.1 斜率优化简介

如果一类最优化问题的 dp 式可以被表示为 \(f_i = \min / \max \{f_j + cosx_i + cosy_j + F_iF_j\}\),则它一般可以被斜率优化直接优化。

这里我们就以最小值为例。

1.2 决策点策略

假设我们要计算 \(f_p\)

我们考虑计算当决策点 \(i < j\) 时,\(i\)\(j\) 优秀的条件。

\[f_i + cosx_p + cosy_i + F_iF_p < f_j + cosx_p + cosy_j + F_jF_p \]

将式子进行化简,得:

\[f_i - f_j < cosy_j - cosy_i + (F_j - F_i) \times F_p \]

继续化简:

\[(cosy_j + f_j) - (cosy_i + f_i) + (F_j - F_i) \times F_p > 0 \]

这时,我们设 \(x_i = cosy_i + f_i\),则:

\[(F_j - F_i) \times F_p > x_i - x_j \]

把式子整理得好看一点:

\[\operatorname{slope}(i, j) = \frac{x_i - x_j}{F_i - F_j} > F_p \]

后面的式子是一个斜率的形式,所以我们把他称之为 斜率优化

1.3 维护决策点

\(x_i\)\(F_i\) 都有序。

于是有两个结论。

结论 1:若当前 \(i\)\(j\) 优,则之后 \(i\) 一定也比 \(j\) 优。

结论 2:相邻决策之间的斜率单调增。

证明较为简单。

可以直接维护单调队列。

\(x_i\) 有序。

结论 1 不存在了,但是还有结论 2!

需要在凸壳上二分。

\(F_i\) 有序。

需要使用平衡树等维护凸壳。

其他情况。

需要 动态凸壳 / 李超线段树。

1.4 斜率优化总结

斜率优化

1.5 经典题目

I. P3195 [HNOI2008]玩具装箱

posted @ 2024-04-09 22:17  DE_aemmprty  阅读(29)  评论(0)    收藏  举报