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,看一下结果时候的状态在这里是分了多少段,就说明这条直线与哪个位置相切,继续二分就可以啦!

感觉还是很玄学呢~

posted @ 2021-06-15 14:33  nao-nao  阅读(37)  评论(0编辑  收藏  举报