wqs 二分共线情况的处理
在我们进行 \(wqs\) 二分时,需要要求函数是具有凸性的,但是有时候最终所求的点在函数上可能和前后的几个点共线,这时我们在应该如何更新答案呢?
此时的取值方式和你二分的 \(check\) 写法有关。
我们以上凸壳为例:
\(check\) 会对每个斜率求出一个转移的次数。
当我们出现几点共线而我们要求的次数正好在中间时,我们可以钦定让 \(check\) 求出最大的转移次数,并判断如果次数 \(\geq m\) 就更新。
或者说钦定让 \(check\) 求出最小的转移次数,并判断如果次数 \(\leq m\) 就更新。
引导博客: https://zhuanlan.zhihu.com/p/340514421#ref_1
那如果我们不太好直接获得最大或最小次数的转移点呢?
我们可以对每个状态多记两个他转移次数的最大值和最小值,在转移时同时更新,以此来判断共线的答案。
引导博客:https://www.luogu.com/article/tn3ojd4r
wqs 二分与费用流
假设我们做最小费用最大流,那每次增广时流量的最短路长度单调递增。
把这个东西当做斜率,即以最小费用为 \(f(x)\),流量为 \(x\) 的函数下凸。
引导博客:https://www.luogu.com.cn/article/knpufhxe (这个博客的结论好像不太对)