斜率优化学习笔记

upd 2024.1

之前写的太牛马了,我当时还没能理解,现在补一下:

拆成 $f[i]+S=f[j]+F(i)G(j)$ 之后,由于 $F(i),G(j)$ 分别单调,$G(j)$ 越大,往后枚举 $i$ 的时候受到的增益也就越大。

所以两个点如果 $f[i]>f[j],G(i)<G(j)$,那么最开始一段是 $i$ 比 $j$ 优,但是会被逐渐反超。

所以用斜率优化,最后如果到某个 i 的时候前面某项不敌后面某项,那直接pop掉。

那么问题来了,$F,G$ 不单调的时候阁下又应该如何应对呢?

很简单,用万能的 cdq 分治即可,转化成左区间对右区间的贡献,然后左边按 $G$ 排序,建凸包,右边按 $F$ 排,扫一遍凸包即可。

posted @ 2022-11-22 17:12  creation_hy  阅读(87)  评论(0编辑  收藏  举报