国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

[POJ2728]Desert King(01分數規劃)

2019-11-08 19:44:09
字體:
來源:轉載
供稿:網友

題目描述

傳送門 題意:給出n個點的坐標和海拔,兩個點之間的距離為歐氏距離,花費為海拔差,求一個生成樹,滿足每公里的花費最小

題解

一個裸的最優比率生成樹問題 二分R,然后每條邊權記為di=costi?R?leni 然后求一個最小生成樹,如果邊權和小于0說明有更優解

代碼

#include<algorithm>#include<iostream>#include<cstring>#include<cstdio>#include<cmath>using namespace std;#define N 1005const double eps=1e-6;int dcmp(double x){ if (x<=eps&&x>=-eps) return 0; return (x>0)?1:-1;}int n;double ans;double x[N],y[N],h[N],a[N][N],b[N][N],d[N][N],minn[N];bool vis[N];double check(double R){ memset(minn,127,sizeof(minn));minn[1]=0; memset(vis,0,sizeof(vis)); for (int i=1;i<=n;++i) for (int j=1;j<=n;++j) d[i][j]=a[i][j]-R*b[i][j]; for (int i=1;i<=n;++i) { int k=0; for (int j=1;j<=n;++j) if (!vis[j]&&minn[j]<minn[k]) k=j; vis[k]=1; for (int j=1;j<=n;++j) if (!vis[j]&&d[k][j]<minn[j]) minn[j]=d[k][j]; } double re=0; for (int i=1;i<=n;++i) re+=minn[i]; return re;}double find(){ double l=0.0,r=1e7,mid,now,ans=1e7; while (dcmp(r-l)>0) { mid=(l+r)/2.0; now=check(mid); if (dcmp(now)<0) ans=r=mid; else l=mid; } return ans;}int main(){ while (~scanf("%d",&n)) { if (!n) break; for (int i=1;i<=n;++i) scanf("%lf%lf%lf",&x[i],&y[i],&h[i]); if (n==1) {puts("0.000");continue;} for (int i=1;i<=n;++i) for (int j=1;j<=n;++j) { a[i][j]=fabs(h[i]-h[j]); b[i][j]=sqrt((x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j])); } ans=find();
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 五寨县| 延吉市| 正镶白旗| 石棉县| 陵川县| 聂拉木县| 玛纳斯县| 义乌市| 望江县| 永登县| 阜新市| 扎赉特旗| 辉县市| 黄平县| 政和县| 筠连县| 澎湖县| 陆川县| 龙门县| 济阳县| 松滋市| 淅川县| 天水市| 浙江省| 白城市| 日喀则市| 新安县| 正宁县| 灵武市| 台州市| 扎囊县| 邯郸县| 凌海市| 驻马店市| 呼和浩特市| 洛宁县| 桦南县| 安多县| 庄浪县| 常州市| 海丰县|