分数规划-学习笔记
简介
分数规划是处理这样一种问题:有 \(n\) 个物品,每个物品有两个权值 \(a_i,b_i\) ,选择一些物品集合 \(X\),最大化以下柿子:
\[\frac{\sum_{i=1}^{k}a_{X_i}}{\sum_{i=1}^{k}b_{X_i}}
\]
更加形象的,选一些物品,使得这些物品的 \(a_i\) 和与 \(b_i\) 和的比值最大。
解决
这种问题涉及到比值,也就是说,你可以选择 \(b_i\) 小的,也可以选择 \(a_i\) 大的,选择一个物品会造成多方面的影响,因此无法直接解决。但我们可以侧面考虑这个问题,给一个比值 \(mid\) ,判断柿子是否可以取到 \(mid\) 。也就是说,比值已经固定,只需要判断就可以了。设原式分子为 \(A\),分母为 \(B\),我们相当于要判断是否存在 \(A,B\) 满足:
\[\frac{A}{B}>=mid\\
A>=mid\times B\\
\left(\sum_{i=1}^{k}a_{X_i}\right)>=\left(\sum_{i=1}^{k}b_{X_i}\times mid\right)\\
\left(\sum_{i=1}^{k}a_{X_i}\right)-\left(\sum_{i=1}^{k}b_{X_i}\times mid\right)>=0\\
\]
相当于把 \(b_i\) 全部乘以 \(mid\) ,判断是否能够存在 \(a_i-b_i\times mid >=0\)。这样就很简单了,因为这个东西满足单调性,因此直接二分就可以了。当然很多题目会加一些限制,这时候就需要具体题目具体讨论,\(check\) 的时候使用更多东西。
例题
模板题。
树上背包
判负环
网络流