斜率优化,顾名思义就是用一次函数的单调性来优化 dp,具体表现为利用单调性找到最优决策点从而优化掉需要枚举的决策点。斜率优化 dp 模板:
dpi=min{dpj+calc(i,j)} 或者
dpi=max{dpj+calc(i,j)} 。
其中 j 为我们所枚举的决策点,从 j 转移到当前决策点 i,calc函数表示需要最小 / 最大化的答案。
斜率优化分类可以根据横坐标和斜率的单调性分成以下:
◆ 斜率单调,横坐标单调。
◆ 斜率不单调或横坐标不单调。
◆ 都【数据删除】的不单调。
这三种都可以用李超线段树,cdq,平衡树维护,对于第二种可以单调队列 / 单调栈和二分解决,以上都是 O(nlogn) 的复杂度,但是第一种可以只用单调队列做到 O(n)。