01分數規劃基本型別

2022-06-08 19:33:11 字數 1051 閱讀 7376

01分數規劃

01分數規劃就是給出\(n\)個二元組\((v_1,w_1),(v_2,w_2),\cdots,(v_n,w_n)\),選出具有\(k\)個元素的集合\(s\),使得\(\fracv_i}w_i}\)最大(或者最小)。

求解的基本方法是二分答案。

判斷是否存在集合\(s\),使得\(\fracv_i}w_i}\geq x\)

也就是\(\sum_v_i-x*\sum_w_i\geq 0\)

即為\(\sum_(v_i-x*w_i)\geq 0\)

因此,將所有元素按照\((v_i-x*w_i)\)的值從大到小排序,貪心選取前\(k\)個,判斷是否大於等於零,從而判斷當前答案是否可行。

每次判斷的時間複雜度\(o(n\log n)\),總的時間複雜度\(o(n\log n\log m)\),\(m\)表示二分的範圍。

最優比率生成樹

無向圖中的每一條邊\(i\)都有花費\(c_i\)和權值\(s_i\),從中選出邊集\(s\)構成一棵生成樹,使得\(\fracc_i}s_i}\)最小。

和01分數規劃類似,二分答案。

\(\fracc_i}s_i}\leq x\)

\(\sum_(c_i-x*s_i)\leq 0\)

每次將每一條邊的邊權設為\((c_i-x*s_i)\),通過\(prime\)演算法求出最小生成樹,判斷最小生成樹的總權值是否小於等於零,從而判斷當前答案是否可行。

最優比率環

有向圖中每個點有點權\(w_i\),每條邊有邊權\(s_j\),從中選出乙個環,集合\(s\)中的元素為環中每個點權和對應入邊邊權組成的二元組,使得\(\fracw_k}s_k}\)最大。

同樣類似於01分數規劃,二分答案。

\(\fracw_k}s_k}\geq x\)

\(\sum_(w_k-x*s_k)\geq 0\)

改成小於等於零的形式:

\(\sum_(x*s_k-w_k)\leq 0\)

這樣可以使用spfa判斷是否存在負環,從而判斷當前答案是否可行。

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