# WQS 二分

发布时间 2023-11-07 19:29:06作者: 谭皓猿

WQS 二分

大概弄懂了是要处理怎么样的问题,以及一般处理张什么样。

形式

一般来说是要处理刚好有 \(k\) 个的问题。
并且选择 \(i\) 个的时候整个问题的代价是凸的。
一般来说通过 \(wqs\) 二分之后直接当做没有限制的方法去做就好了。

做法

\(f(i)\) 为选 \(i\) 个的最优价值,得是凸的。

显然我们可以选一条直线去切,由于凸包斜率单调,所以直线能切到的点 \(i\) 随直线的斜率单调。
这个直线的斜率的效果可以看做凸包上的每一个点的 \(y\) 都增加 \(i*k\),取里面的最值。
所以就可以看做每个被选的有额外的 \(k\) 的价值。

但是可能会出现平的,所以为了防止二分到前面去,可以固定成选最后面一个,这是要取等的情况。

问题

P2619 [国家集训队] Tree I

要求选 \(k\) 条白边,所以我们二分每条白边的额外价值就好了,只需要注意优先选白边就行了,相当于固定选后面的。

P5633 最小度限制生成树

和上题一模一样的题,将相连的边改为白边即可,这题的难点在判误解。
需要判断边不够和要联通不得不超过 \(k\) 的情况,还有不连通的情况。

P4983 忘情

一段的代价可以化简为 \((\sum x_i+1)^2\),显然是一个可以斜优的式子。
把一段当做物品,然后在斜优的过程中尽量选后面的,所以要能弹则弹。