最小比例生成樹

2021-07-27 13:50:02 字數 948 閱讀 3561

根據題解來說,這是一道最小比例生成樹的題。

另建乙個起點 0,連線一條 0 到 1 長度為 0 的邊,就此將問題轉化為長度和

邊數最小比值。 這個問題的求解需要分數規劃。

假設答案為 ans,對於任意一條由 k 條邊組成的路徑,有:

(w1+w2+w3+…+wk)/k>=ans;

轉化一下:

(w1+w2+w3+…+wk) >=ans*k;

即(w1-ans)+(w2-ans)+(w3-ans)+…+(wk-ans)>=0。

於是就得到了這樣乙個演算法:

二分答案 x,每次將每一條邊的權值減去 x 求最短路,判斷 1~n 的最短路是

否大於 0: 若大於 0,則說明答案 ans>x;否則說明 ans

#include

#include

#include

#include

#define inf 0x7fffffff

#define lim 1e-4

#define m 2010

#define n 210

using

namespace

std;

queue

q;double dis[n];int n,m;

bool et[n];

struct ea[m];int cnt,last[n];

void bud(int u,int v,double w)

bool spfa(double x)

}return dis[n]<-lim;

}int main()

bud(0,1,0);

double l=0,r=1e3;

while(r-l>=lim)

printf("%.3lf",l);

return

0;}

POJ 2728 最小比例生成樹

傳送門 有n個村莊,每個村莊都有乙個 x,y 座標和z海拔,定義兩個村莊間的dist為座標的距離,cost為海拔差的絕對值,求圖的一顆生成樹,使得 frac 最小。最小比例生成樹的裸題。看到 frac 的分數形式,首先可以想到分數規劃 設 ans frac 則 sum cost ans sum di...

最優比率生成樹 最優比例生成樹

2005年的acm地區賽賽場上,樓爺高速過了乙個求最優比率生成樹的問題,從而打亂了全場的陣腳,順利奪冠.有帶權圖g,對於圖中每條邊e i 都有benifit i 收入 和cost i 花費 我們要求的是一棵生成樹t,它使得 benifit i cost i i t 最大 或最小 這顯然是乙個具有現實...

最優比率生成樹 最優比例生成樹

有帶權圖g,對於圖中每條邊e i 都有benifit i 收入 和cost i 花費 我們要求的是一棵生成樹t,它使得 benifit i cost i i t最大 或最小 這顯然是乙個具有現實意義的問題.設x i 等於1或0,表示邊e i 是否屬於生成樹.則我們所求的比率r benifit i x...