分数规划模型学习笔记

问题

给定 nn 个二元组 (ai,bi)(a_i, b_i) ,从中选出 kk 个二元组使得 ΣaiΣbi\frac{\Sigma a_i}{\Sigma b_i} 尽可能大,求出最小值。

求解

假设

ΣaiΣbix\frac{\Sigma a_i}{\Sigma b_i} \geq x

则可以将式子变形为

ΣaixΣbi0\Sigma a_i - x \cdot \Sigma b_i \geq 0

xx 进行二分,将 aixbia_i - x \cdot b_i 从大到小排序,选出前 kk 个 ,判断式子是否成立,如果成立则增加 xx ,不成立则减小 xx ,直至求出最优解。