學習了lyd書上的0/1分數規劃,發現這類題目都有乙個特點,就是求$\frac*x_}}*x_}}$的最大或者最小,再加一些限制取不取的條件.
poj2976
二分答案+sort取前(n-k+1)個。
#include #includecode#include
#include
using
namespace
std;
const
int maxn = 1e3 + 50
;int
a[maxn], b[maxn];
double
diff[maxn];
intn, k;
int check(double
x) sort(diff + 1, diff + n + 1
);
double ans = 0
;
for(int i = n; i >= k + 1; i--)
if(ans >= 0.0 || fabs(ans) <= (1e-8)) return1;
else
return0;
}int
main()
else
}printf(
"%.f\n
", 100.0 *ans);
}return0;
}
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...