分数规划
分数规划用来求一个分式的极值:给出 a i , b i a_i,b_i ai,bi,求一组 w i ∈ { 0 , 1 } w_i\in\{0,1\} wi∈{ 0,1} 使 ∑ i = 1 n a i w i ∑ i = 1 n b i w i \displaystyle\frac{\sum_{i=1}^n a_iw_i}{\sum_{i=1}^n b_iw_i} ∑i=1nbiwi∑i=1naiwi 最小化或最大化,再加上一些奇怪的限制。
所以背包、树形背包、最小生成树、最短路、二分图最大匹配等问题都可以套个分数规划变得毒瘤。
求解
二分求解
最大值:二分一个答案 m i d mid mid,则:
∑ i = 1 n a i w i ∑ i = 1 n b i w i > m i d ⟹ ∑ i = 1 n a i w i − m i d × ∑ i = 1 n b i w i > 0 ⟹ ∑ i = 1 n w i ( a i − m i d × b i ) > 0 \displaystyle\frac{\sum_{i=1}^n a_iw_i}{\sum_{i=1}^n b_iw_i}>mid \\ \implies\sum_{i=1}^n a_iw_i - mid \times\sum_{i=1}^n b_iw_i>0 \\ \implies\sum_{i=1}^nw_i(a_i-mid \times b_i) > 0 ∑i=1nbiwi∑i=1naiwi>mid⟹i=1∑naiwi−mid×i=1∑nbiw