wqs二分随便乱写

这东西好难啊……(指洛谷评分)

首先呢,这玩意也叫做什么带权二分之类的,用来优化dp。

就是我们需要求一个在什么什么限制下的最优,然后通过调整奇奇怪怪的东西使得最优的时候恰好满足条件,总之是一个十分玄学的东西了!

什么时候可以用呢?需要的是答案是凸包。

而啥又是凸包呢?

拿个例题,就比如说有个数列,分成k段,每段价值是 ((1 + sum a_i)^2) ,求最小价值。

我们设 (f_i) 为分成 i 段时候的最小价值,然后令点坐标为 ((i,f_i)) 可以发现他是一个凸包,为什么咱也不知道,也不太会证。

那么我们怎么求出这个凸包呢?求不出来呀,不然咱干啥来了是吧。

我们需要做奇奇怪怪的调整,也就是对于每一段,我们给他弄上一个额外的权值上去,然后进行调整,使得答案恰好符合性质。

我们设搞上去的奇怪的权值为b,那么实际上原先的那些 ((i,f_i)) 都变成了 ((i,f_i + ib)) 。对吧,到这里应该都挺好理解。

把图弄上去(没找到做图工具)

会发现这个 (f_i + i*b) 可以看做原图像与直线 (y = -bx) 之间夹的高度。

那么怎么着这个我们令 (f_i + i*b = k) ,也就是过凸包上一点 ((i,f_i)) 的一条斜率为 (-b) 的直线 (y = -bx + k) 。要求其截距尽可能的小。那么就是直线与凸包相切的时候!

那么我们二分斜率,正常做dp,看一下结果时候的状态在这里是分了多少段,就说明这条直线与哪个位置相切,继续二分就可以啦!

感觉还是很玄学呢~

原文地址:https://www.cnblogs.com/nao-nao/p/14876324.html