傳送門
有n個村莊,每個村莊都有乙個(x, y)座標和z海拔,定義兩個村莊間的dist為座標的距離,cost為海拔差的絕對值,求圖的一顆生成樹,使得\(\frac\)最小。
最小比例生成樹的裸題。
看到\(\frac\)的分數形式,首先可以想到分數規劃:
設\(ans = \frac\)
則\(\sum cost - ans * \sum dist = 0\)
那麼可以二分答案ans,將邊的權值都變成\(cost - ans * dist\),並求最小生成樹:
#include#include#include#include#includeusing namespace std;
#define eps 1e-7
const double oo = 0x3f3f3f3f;
int n;
double ans, dist[1050][1050], len[1050][1050];
double x[1050], y[1050], z[1050], cost[1050][1050];
double minlen[1050];
bool used[1050];
inline double check(double mid)
minlen[1] = 0;
double ret = 0;
while(true)
return ret;
}int main()
} double l = 0, r = 1e6;
for(int i = 1; i <= 50; i++)
printf("%.3f\n", (l + r) / 2);
}}
POJ 2728 最優比例生成樹
有帶權圖g,對於圖中每條邊e i 都有benifit i 收入 和cost i 花費 我們要求的是一棵生成樹t,它使得 benifit i cost i i t 最大 或最小 設x i 等於1或0,表示邊e i 是否屬於生成樹.則我們所求的比率 r benifit i x i cost i x i ...
poj2728 最優比率生成樹
這個題的意思是給你乙個連通圖,圖上每個點都有連個權值ai,bi讓你選乙個生成樹使得sigma ai xi sigma bi xi 最小,對比與基礎的01規劃,我們假設答案是mid,然後建立乙個圖,其新的邊的權值是ai mid bi,然後求解最小生成樹,假設其答案是tp,如果tp 0,說明還有更優的解...
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 ...