快来踩爆这个蒟蒻吧|

Little_corn

园龄:1年1个月粉丝:11关注:17

2024-11-02 21:32阅读: 19评论: 0推荐: 0

斜率优化笔记

写给自己看的。

首先看到有 i,j 无法分离的项的 DP 一般就是斜率优化,像 (sisj)2 之类的。

首先将转移方程式写成 bi=yjkixj 的形式,拍到坐标系上。那么等价于用斜率为 ki 的直线去切点,第一个切到的点是哪个,即截距最小/最大。显然切到的点在凸包上,即找到第一个凸包上的点 qi 满足 slope(qi1,qi)kslope(qi,qi+1) 优化方式如下:

  • 如果 x,y 都单调递增,那么可以直接在 DP 过程中用单调队列维护一下凸包, O(n)

  • 如果 x 递增的话,可以使用二分队列,O(nlogn)

  • 否则 CDQ 分治 或 平衡树(不推荐),O(nlog2n)

但是还有最简单粗暴的方法:即把转移方程式表示成 yj=kjxi+bj 这样直线的形式。然后使用李超线段树优化,因为是全局加直线不用分拆区间,离散化 x 即可做到 O(nlogn),码量小常数小,还不用动脑子,严格偏序 CDQ 和平衡树(当然平衡树维护凸包还是很有必要学的)。

本文作者:Little_corn

本文链接:https://www.cnblogs.com/little-corn/p/18522479

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   Little_corn  阅读(19)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起