0 1分數規劃 AT1807 食塩水

2022-06-18 15:06:11 字數 556 閱讀 7022

從\(n\)對數\((w_i,p_i)\)中選擇\(k\)對使得

\[\frac^k w'_i*p'_i}^k w'_i}

\]最大

若可行解為\(t\),

\[\frac^k w'_i*p'_i}^k w'_i}\geq t

\]化簡得到

\[\sum_^k w'_i*(p'_i-t)\geq 0

\]那可以對於每一對\((w_i,p_i)\)求出\(w_i*(p_i-t)\)

貪心從大到小選擇,若前\(k\)個和不少於0,則此解為可行解

#include #include #include #define rr register

using namespace std;

const int n=1011;

int n,k; double w[n],a[n],c[n];

inline bool check(double mid)

signed main()

return !printf("%.9lf",l);

}

0 1分數規劃

題目鏈結 中文鏈結 附一篇大佬部落格感覺講的不錯 0 1分數規劃,不妨設 l a i b i 題目要求要讓結果最大,那麼就是l最大最終移相化簡可得 a i l b i 0,因為a 和b都是已知所以我們可以直接列舉l,當我們所求的值大於零說明l還有更優解當小於零時l沒有最優解。直接二分即可 inclu...

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...