poj2728 最優比率生成樹

2022-03-21 02:35:18 字數 1130 閱讀 1007

這個題的意思是給你乙個連通圖, 圖上每個點都有連個權值ai, bi讓你選乙個生成樹使得sigma(ai*xi)/sigma(bi*xi)最小, 對比與基礎的01規劃, 我們假設答案是mid, 然後建立乙個圖, 其新的邊的權值是ai-mid*bi, 然後求解最小生成樹,假設其答案是tp, 如果tp>=0,說明還有更優的解, 如果小於0那麼解小於mid, **如下:

#include #include 

#include

#include

using

namespace

std;

const

int inf = 0x3fffffff

;const

double eps = 1e-6

;const

int maxn = 1000+10

;int

n;struct

vivi[maxn];

double

ai[maxn][maxn], bi[maxn][maxn];

double

ci[maxn][maxn];

double dist(int i, int

j)double

mincost[maxn];

bool

used[maxn];

double check(double

mid)

for(int i=0; i)

mincost[

0] = 0

;

double res = 0

;

while(true

)

return

res;

}int

main()

; }

double high = 0.0

;

for(int i=0; i)

for(int j=i; j)

double l=0.0, r=high+5.0

;

while(r-l >=eps)

printf(

"%.3f\n

", l);

}return0;

}

poj 2728 最優比率生成樹

思路 設sum cost i sum dis i r 那麼要使r最小,也就是minsum cost i r dis i 那麼就以cost i r dis i 為邊權重新建邊。當求和使得最小生成樹的 sum cost i r dis i 0時,這個r就是最優的。這個證明是01分數規劃。include ...

POJ2728 最優比率生成樹

一張 n 個結點 m 條邊的無向圖,每條邊有兩個權值 a,b 求一顆生成樹滿足樹上的所有邊 a 權和與 b 權和的商最大。1 n,m 1e4 0 1分數規劃 從長度為 n 的數列 和 中選出若干對,使得選出的 a 之和與 b 之和商最大。即求一組 x i 1 i n,x i 0 or 1 最大化 f...

poj2728 最優比率生成樹

題意 乙個無向圖,每條邊有兩個權值,h和l,要求乙個生成樹,使得所有邊的h的和比上l的和最小。設x i 等於1或0,表示邊e i 是否屬於生成樹.則我們所求的比率 r benifit i x i cost i x i 0 i為了使 r 最小,設計乙個子問題 讓 z benifit i x i k c...