问题
求 一 组 解 x 1 , x 2 , x 3 , x 4 . . . x n , x = 0 o r 1 使 得 ∑ i = 1 n a i × x i ∑ i = 1 n b i × x i 最 大 化 求一组解x_1,x_2,x_3,x_4...x_n,x=0\ or \ 1\\ 使得\frac{\sum_{i=1}^{n}a_i\times x_i}{\sum_{i=1}^{n}b_i\times x_i}最大化 求一组解x1,x2,x3,x4...xn,x=0 or 1使得∑i=1nbi×xi∑i=1nai×xi最大化
解决
考虑随机一个L,然后假设
存 在 x 1 , x 2 . . . x n , 使 得 ∑ i = 1 n a i × x i ∑ i = 1 n b i × x i > = L 存在{x_1,x_2...x_n},使得\\ \frac{\sum_{i=1}^{n}a_i\times x_i}{\sum_{i=1}^{n}b_i\times x_i}>=L 存在x1,x2...xn,使得∑i=1nbi×xi∑i=1nai×xi>=L
然后化简这个式子:
= = > ==> ==>
a 1 x 1 + a 2 x 2 + a 3 x 3 + . . . + a n x n b 1 x 1 + b 2 x 2 + b 3 x 3 + . . . + b n x n > = L \frac{a_1x_1+a_2x_2+a_3x_3+...+a_nx_n}{b_1x_1+b_2x_2+b_3x_3+...+b_nx_n}>=L b1x1+b2x2+b3x3+...+bnxna1x1+a2x2+a3x3+...+anxn>=L
= = > ==> ==>
a 1 x 1 + a 2 x 2 + a 3 x 3 + . . . + a n x n > = L ∗ ( b 1 x 1 + b 2 x 2 + b 3 x 3 + . . . + b n x n ) a_1x_1+a_2x_2+a_3x_3+...+a_nx_n>=L*(b_1x_1+b_2x_2+b_3x_3+...+b_nx_n) a1x1+a2x2+a3x3+...+anxn>=L∗(b1x1+b2x2+b3x3+...+bnxn)
= = > ==> ==>
a 1 x 1 − L × b 1 x 1 + a 2 x 2 − L × b 2 x 2 + . . . + a n x n − L × b n x n > = 0 a_1x_1-L\times b_1x_1+a_2x_2-L\times b_2x_2+...+a_nx_n-L\times b_nx_n>=0 a1x1−L×b1x1+a2x2−L×b2x2+...+anxn−L×bnxn>=0
= = > ==> ==>
∑ i = 1 n a i x i − L × b i x i > = 0 \sum_{i=1}^{n}a_i x_i-L\times b_ix_i>=0 i=1∑naixi−L×bixi>=0
也就是说,如果如果可以构造出一组解使得
∑ i = 1 n ( a i − L × b i ) x i > = 0 \sum_{i=1}^{n}(a_i-L\times b_i)x_i>=0 i=1∑n(ai−L×bi)xi>=0
那么我们当前随机的这个L比原式的最大值要小,即
∃ x 1 , x 2 . . . x n , 使 得 ∑ i = 1 n a i × x i ∑ i = 1 n b i × x i > = L \exist{x_1,x_2...x_n},使得\\ \frac{\sum_{i=1}^{n}a_i\times x_i}{\sum_{i=1}^{n}b_i\times x_i}>=L ∃x1,x2...xn,使得∑i=1nbi×xi∑i=1nai×xi>=L
同理,如果构造不出一组解x满足上式,也就是说对于任意的一组解x都有:
∑ i = 1 n ( a i − L × b i ) x i < 0 \sum_{i=1}^{n}(a_i-L\times b_i)x_i<0 i=1∑n(ai−L×bi)xi<0
那么我们随机的这个数比最大值要大即
任 意 x 1 , x 2 . . . x n , 使 得 ∑ i = 1 n a i × x i ∑ i = 1 n b i × x i < L 任意{x_1,x_2...x_n},使得\\ \frac{\sum_{i=1}^{n}a_i\times x_i}{\sum_{i=1}^{n}b_i\times x_i}<L 任意x1,x2...xn,使得∑i=1nbi×xi∑i=1nai×xi<L
根据定理:判定问题普遍比最优问题简单,这种转化是有意义的
具体来讲就是上式中的 a i − L × b i a_i-L\times b_i ai−L×bi是可以O(1)算出来的,那么这个问题就相当于是在一堆数中让你选出来一些数然后求这些数的和的最大值,显然直接贪心把所有正数拿出来就好了啊
与二分的关系
很显然,这个式子 ∑ i = 1 n ( a i − L × b i ) x i \sum_{i=1}^{n}(a_i-L\times b_i)x_i ∑i=1n(ai−L×bi)xi关于L单调,也就是说,L越大,这个式子的最优解越小,在0处为最优解
单调性是利用二分解决问题的重要前提,就是这样