根據題解來說,這是一道最小比例生成樹的題。
另建乙個起點 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...