【总结】01分数规划

01分数规划指的是这么一类问题:
有两个长度为\(n\)的数列\(a\)\(b\),要求使下式值最大
\[\frac{\sum_{i=1}^na_i\times c_i}{\sum_{i=1}^nb_i\times c_i}\]
其中\(c_i=0\)\(1\)
就是对于每组\(a,b\)由你决定选与不选,使得选出的所有\(a\)的和和\(b\)的和的商最大。

解决这类问题,通常采用二分答案的方法。
假设最大值为\(ans\),则一定有:
\[\frac{sum_a}{sum_b}<=ans\]
其中\(sum_a\)\(sum_b\)分别是任何一种选取情况下\(a\)的总和和\(b\)的总和。
移项得:
\[sum_a<=ans\times sum_b\]
再移:
\[sum_a-ans*sum_b<=0\]
展开得:
\[\sum_{i=1}^na_i\times c_i-ans\times \sum_{i=1}^nb_i\times c_i<=0\]
合并得:
\[\sum_{i=1}^n(a_i-ans\times b_i)\times c_i<=0\]

猜你喜欢

转载自www.cnblogs.com/Qihoo360/p/10349049.html