结营信心赛div1C题题解

简要题意:

对于一张\(n\)条边的无向完全图,每条边有两个权值\(a_i,b_i\),求一棵最小生成树使其\(\frac{\sum{a_i}}{\sum{b_i}}\)最小。

这道题如果没见过这种技巧可能不好想,但我们也可以考虑一个朴素的想法,那就是猜!

我们猜这个答案是$ mid$,然后就可以推一下柿子。

\[\frac{\sum {a_i}}{\sum {b_i} } = mid \]

\[\sum{a_i}-mid \times \sum{b_i} = 0 \]

此时我们讨论等式左边,若大于\(0\)说明这个\(mid\)不符合实际,还需要更大,这样一个二分性就出来了。我们对答案进行二分,每次将\(a_i-mid \times b_i\)作为边权求一个生成树,看\(\frac{\sum a_i}{\sum b_i}\),再继续二分,时间复杂度\(O(n^2)\),其实这样就足够通过本题了。注意由于是完全图所以要用prim算法(但由于数据水,瓜的卡常版kruscal可以通过)。代码难度较低,这里就不放了。

像这类求 \(\frac{\sum {a_i}}{\sum b_i}\)最值的问题被称为0/1分数规划,解决这类问题的一般方法是二分答案,像刚才一样。

完成这道题的同学可以思考一下P3199 [HNOI2009]最小圈,跟上题做法类似。

posted @ 2023-09-08 09:46  OIer_xxx2022  阅读(39)  评论(0编辑  收藏  举报