分數規劃問題,指形如求函式σf(i)/σg(i)值最大/小值,而一般來說,直接解決是很困難的,必須要採用巧辦法。那麼怎麼辦?二分!假設我們求的是式子的最小值,可以二分乙個值k,看是否滿足σf(i)/σg(i)<=k,然後可以把σg(i)乘到不等式右邊並移項,就可以得到σ(f(i)-kg(i))<=0。這個很好求解。
與分數規劃常常結合起來的演算法:dp求最值,最短路,spfa求負環
來看一道比較水的例題:poj2728
題意:給定平面內n個點和每個點的高度,兩兩連線的距離為歐幾里得距離,代價為高度差,求生成樹使得代價和比距離和最小。
題解:當然是二分乙個值k,然後定義每個距離為代價減去k乘距離,跑一遍最小生成樹判斷和是否小於0即可。
注意:1、記得用g++,poj的c++就是辣雞。
2、圖為完全圖,所以,一切和邊數有關的複雜度演算法不能用。最好用鄰接矩陣儲存(訪問連續記憶體),而且不能用kruskal,而是prim,雖然prim求負權的邊不一定是最小生成樹,但是它求的正負性是對的!本題只要求正負性!
3、二分上界不宜過大,100即可。
01分數規劃 學習筆記
n 個物品選 k 個,最大化 frac a i b i 二分答案 mid 如果 sum limits 0 則可以更優 顯然是要選擇 a i mid b i 的前 k 大 最小化生成樹的 n 條邊 frac cost i,j dis i,j 一樣的做法二分答案每次求最小生成樹 然後完全圖用 krusk...
學習筆記 0 1分數規劃
對於一類 每個元素有兩個屬性a,b 選擇若干個元素,使得 frac 取到最值。這類問題可以採用二分的方法。然後構造出模型用於判定。推導 二分mid 如果mid ans,那麼存在一組解 使得 mid frac 即,存在一組解 使得 mid times sum b sum a 0 我一般喜歡變成 sum...
01分數規劃學習筆記
01分數規劃學習筆記 今天 gsh 帶著我們複習了一下01分數規劃。01分數規劃就是假設乙個物體有兩個屬性 a,b,同時選擇在這個集合中的k個物品,使 v dfrac a i cdot x i b i cdot x i sum x i k 的值最大。那麼如何能做到呢?看這個式子我們很難看出如何求解,...