01分數規劃學習筆記

何爲01分數規劃

01分數規劃解決的是這麼一類問題:

從給定的數列aibi{a_i}、{b_i},求i=1aipii=1bipi\frac{\sum_{i=1}{a_i}*p_i}{\sum_{i=1}{b_i}*p_i}的最值問題

其中p爲一個01數列。

也就是從一個二元組列表中選一些二元組,求x項之和/y項和的最值。

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

這類問題我們通常用二分+分數規劃來做

詳解

直接求解不容易,我們可以考慮如何判斷某個答案是否合法。

下面以最小值爲例:

假設二分出答案ans

i=1aipii=1bipi\frac{\sum_{i=1}{a_i}*p_i}{\sum_{i=1}{b_i}*p_i}中分母爲A,分子爲B

那麼=A/B>=ans=A/B >= ans

=A>=ansB=A>=ans*B

=ABans>=0=A-B*ans>=0

把AB兩個式子展開:

=i=1aipibipians>=0=\sum_{i=1}^{a_i*p_i-b_i*p_i*ans}>=0

所以當最後一個式子成立的時候答案ans合法。

我們有注意到ans越大越不好滿足,所以這個是有單調性的。

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

因此我們可以二分ans,然後判斷。

推薦題目:

最小路徑密度

題解

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章