P2619 [国家集训队]Tree I
给定一个n个点,m条边的无向图,每条边有一个颜色黑色或者白色,求解恰好有k条白色边的最小生成树。
那么看到恰好选择k个的最优性问题,我们可以利用WQS二分解决,实际上就是利用了对于每个选择个数对应的最小值看作是平面上的点,它满足凸性,考虑二分一个直线来切这个凸包,对于每个点有b=g(x)−kxb=g(x)-kxb=g(x)−kx然后相当于给每个物品减去k的大小,然后求解最小值。
注意一些问题,就是比如有斜率相同的一段,那么我们无论怎么二分也无法恰好达到,但是我们可以二分到最小的大于等于这个位置的点,但是需要尽量多选择白边,这样子就一定可以得到答案。因为所有的答案都是整数,所以这两点之间的斜率也是一个整数,所以我们不需要进行实数二分。