0 1分數規劃

2021-09-25 18:07:40 字數 667 閱讀 4995

題目鏈結

中文鏈結

附一篇大佬部落格感覺講的不錯

0/1分數規劃,不妨設 l = ∑a[i] / ∑b[i] ,題目要求要讓結果最大,那麼就是l最大最終移相化簡可得

∑a[i] - l*∑b[i] = 0,因為a 和b都是已知所以我們可以直接列舉l,當我們所求的值大於零說明l還有更優解當小於零時l沒有最優解。直接二分即可

**:

#include using namespace std;

int n,m;

double a[1000004],b[1000004];

bool check(double l);

for(int i = 0; i < n; i ++)

sort(d , d + n);

double sum = 0;

for(int i = m; i < n ; i ++)

return sum >= 0;

}int main()

for(int i = 0; i < n; i ++)

double l = 0,r = 1;

while( r - l > 1e-7)

else r = mid;

}printf("%.0f\n",l*100);

}

}

01分數規劃

01分數規劃,就是這樣乙個東西 max frac 其中 xi in 簡而言之,就是在n個物品中選出任意幾個 或者可以有限制選多少個 使得其兩種權值a,b的比值最大 這樣的問題可以二分解決 假如有這樣一道裸題 poj2976,選n k個物品使得比值最大 我們二分出r,若存在 frac r 則r可行 變...

01分數規劃

已經接觸過01分數規劃但是只知道二分寫法 實際求解略慢 dinkelbach演算法還是值得一學的。上一道裸的01分數規劃吧。poj x陣列代表我們選或者不選 0,1構成 r sigma a i x i sigma b i x i 變形 設f v 為 sigma a i x i sigma b i x...

0 1分數規劃

參照 有兩個數字n,k,兩個大小為n的陣列a,b,將其分成k n 包含 份,使得 r sigma ai sigma bi 最大。我們將之化成di ai r bi,求d的和,二分求出來r的最大值就行了。poj2976 01分數規劃 include include include include usi...