天天看点

01分数规划学习笔记何为01分数规划详解推荐题目:

何为01分数规划

01分数规划解决的是这么一类问题:

从给定的数列 a i 、 b i {a_i}、{b_i} ai​、bi​,求 ∑ i = 1 a i ∗ p i ∑ i = 1 b i ∗ p i \frac{\sum_{i=1}{a_i}*p_i}{\sum_{i=1}{b_i}*p_i} ∑i=1​bi​∗pi​∑i=1​ai​∗pi​​的最值问题

其中p为一个01数列。

也就是从一个二元组列表中选一些二元组,求x项之和/y项和的最值。

常常是求最大中的最小、最小中的最大。

这类问题我们通常用二分+分数规划来做

详解

直接求解不容易,我们可以考虑如何判断某个答案是否合法。

下面以最小值为例:

假设二分出答案ans

令 ∑ i = 1 a i ∗ p i ∑ i = 1 b i ∗ p i \frac{\sum_{i=1}{a_i}*p_i}{\sum_{i=1}{b_i}*p_i} ∑i=1​bi​∗pi​∑i=1​ai​∗pi​​中分母为A,分子为B

那么 = A / B > = a n s =A/B >= ans =A/B>=ans

= A > = a n s ∗ B =A>=ans*B =A>=ans∗B

= A − B ∗ a n s > = 0 =A-B*ans>=0 =A−B∗ans>=0

把AB两个式子展开:

= ∑ i = 1 a i ∗ p i − b i ∗ p i ∗ a n s > = 0 =\sum_{i=1}^{a_i*p_i-b_i*p_i*ans}>=0 =∑i=1ai​∗pi​−bi​∗pi​∗ans​>=0

所以当最后一个式子成立的时候答案ans合法。

我们有注意到ans越大越不好满足,所以这个是有单调性的。

如果ans不行,那么比ans大的都不能满足;如果ans合法,那么比ans小的都合法。

因此我们可以二分ans,然后判断。

推荐题目:

最小路径密度

题解

继续阅读