写给自己的一点复习与总结
(主要是今天高强度盯着东西罚坐以及晚上和d*h battle了很久,所以来写点东西)
(话说,最近用onenote记东西习惯了,一下子有点不适应)
spole trick
当一些dp直接进行复杂度不可接受的时候,如果这个dp的斜率都是单调递增(或递减的),并且都是整数,那么我们可以考虑这么优化
如果我们将某个函数 g ( x ) g(x) g(x) 的所有斜率改变1的点维护下来,(如果在某个点 x x x 斜率的变化大于1,那么这个位置要记录多次),那么我们就维护出来了这个函数
那么问题是? 我们怎么求想要的函数值呢?
对于最小值dp问题来说,斜率最接近0的部分,应该就是所求答案。
对于函数图像,我们可以这么理解,斜率为0的一段上的dp值都相同(但我们此时还不知道是多少),因此,在所有能给这一段上的点更新答案的位置,使得更新出来的答案最小的,就是我们想要找的点(同时,因为要使得答案在最小范围内,用于更新答案的位置应该在这段上)