一个完全图,每两个点之间的cost是海拔差距的绝对值,长度是平面欧式距离,

让你找到一棵生成树,使得树边的的cost的和/距离的和,比例最小

然后就是最优比例生成树,也就是01规划裸题

看这一发:http://blog.csdn.net/sdj222555/article/details/7490797

#include<stdio.h>
#include<algorithm>
#include<math.h>
#include<queue>
#include<string.h>
using namespace std;
const int N=1e3+;
const double eps=1e-;
const int INF=0x3f3f3f3f;
int n;
double x[N],y[N],z[N];
double cost[N][N],dis[N][N];
bool vis[N];
double d[N];
double mst(double x) {
memset(vis,false,sizeof(vis));
vis[]=true;
for(int i=; i<=n; ++i) {
d[i]=cost[][i]-x*dis[][i];
}
double ret=;
for(int i=;i<n;++i){
int u;
double mx=INF;;
for(int j=;j<=n;++j)
if(!vis[j]&&mx>d[j]){
mx=d[j];
u=j;
}
ret+=mx;
vis[u]=true;
for(int j=;j<=n;++j)
if(!vis[j]&&d[j]>cost[u][j]-x*dis[u][j])
d[j]=cost[u][j]-x*dis[u][j];
}
return ret;
}
int main() {
while(~scanf("%d",&n)) {
if(n==)break;
for(int i=; i<=n; ++i) {
scanf("%lf%lf%lf",&x[i],&y[i],&z[i]);
for(int j=; j<i; ++j) {
dis[i][j]=dis[j][i]=sqrt(1.0*(x[i]-x[j])*(x[i]-x[j])+1.0*(y[i]-y[j])*(y[i]-y[j]));
cost[i][j]=cost[j][i]=fabs(z[i]-z[j]);
}
}
double r=200000.0,l=0.0,mid;
while(r-l>eps) {
mid=(l+r)/2.0;
if(mst(mid)>=)l=mid;
else r=mid;
}
printf("%.3f\n",mid);
}
return ;
}

POJ 2728 Desert King 01分数规划,最优比率生成树的更多相关文章

  1. POJ 2728 Desert King (01分数规划)

    Desert King Time Limit: 3000MS   Memory Limit: 65536K Total Submissions:29775   Accepted: 8192 Descr ...

  2. POJ 2728 Desert King ★(01分数规划介绍 && 应用の最优比率生成树)

    [题意]每条路径有一个 cost 和 dist,求图中 sigma(cost) / sigma(dist) 最小的生成树. 标准的最优比率生成树,楼教主当年开场随手1YES然后把别人带错方向的题Orz ...

  3. POJ 2728 Desert King | 01分数规划

    题目: http://poj.org/problem?id=2728 题解: 二分比率,然后每条边边权变成w-mid*dis,用prim跑最小生成树就行 #include<cstdio> ...

  4. poj2728 Desert King(最小生成树+01分数规划=最优比率生成树)

    题意 n个点完全图,每个边有两个权值,求分数规划要求的东西的最小值. (n<=1000) 题解 心态炸了. 堆优化primT了. 普通的就过了. 我再也不写prim了!!!! 咳咳 最优比率生成 ...

  5. 【usaco-Earthquake, 2001 Open】 0-1分数规划 & 最优比率生成树

    题意:给定n个点m条边,一开始这些边全都是断的,要修一些边使得n个点全部联通.修完一共可以得到F元,修一条边有成本di和时间ti,要使得 得到的钱数 / 总时间 这个比值最大. 参考资料: 红线内的内 ...

  6. poj2728 Desert King——01分数规划

    题目:http://poj.org/problem?id=2728 第一道01分数规划题!(其实也蛮简单的) 这题也可以用迭代做(但是不会),这里用了二分: 由于比较裸,不作过多说明了. 代码如下: ...

  7. 【POJ2728】Desert King - 01分数规划

    Description David the Great has just become the king of a desert country. To win the respect of his ...

  8. poj2728 Desert King --- 01分数规划 二分水果。。

    这题数据量较大.普通的求MST是会超时的. d[i]=cost[i]-ans*dis[0][i] 据此二分. 但此题用Dinkelbach迭代更好 #include<cstdio> #in ...

  9. 【POJ2728】Desert King(分数规划)

    [POJ2728]Desert King(分数规划) 题面 vjudge 翻译: 有\(n\)个点,每个点有一个坐标和高度 两点之间的费用是高度之差的绝对值 两点之间的距离就是欧几里得距离 求一棵生成 ...

随机推荐

  1. 在AngularJS中学习javascript的new function意义及this作用域的生成过程

    慢慢入门吧,不着急. 至少知道了controller和service的分工. new function时,隐含有用this指向function的prototype之意. 这样,两个JAVASCRIPT ...

  2. jvm调优具体参数配置

    3.JVM参数 在JVM启动参数中,可以设置跟内存.垃圾回收相关的一些参数设置,默认情况不做任何设置JVM会工作的很好,但对一些配置很好的Server和具体的应用必须仔细调优才能获得最佳性能.通过设置 ...

  3. nginx的健康检查功能将挂掉的Tomcat舍弃

    1.Ngninx自带健康检查功能,能将挂掉的服务器舍弃,不在访问路径里 2.Nginx还有URL重写功能,能将接收到的请求,进行改写,再将新的URL分发到后端服务器上

  4. Winsock完成端口模型-Delphi代码

    原文出处 <Windows网络编程技术>第8章 完成端口模型 由于原书附的是C代码,我把其翻译成Delphi代码. 其中winsock2.pas在delphi中不带,要另外下载http:/ ...

  5. 如何发布使用LGPL版Qt的商业软件

    最近做跨平台图形用户界面库选型,权衡很多因素后最终选择了Qt,其中一个重要因素就是Qt使用LGPL授权许可.由于本人对LGPL理解有限,始终对闭源商业软件如何发布Qt库存在疑问,其中最关心的是:发布的 ...

  6. PowerDesigner技巧

    原文:PowerDesigner技巧 1.PowerDesigner使用MySQL的auto_increment  ◇问题描述:  PD怎样能使主键id使用MySQL的auto_increment呢? ...

  7. 244. Shortest Word Distance II

    题目: This is a follow up of Shortest Word Distance. The only difference is now you are given the list ...

  8. 通过数据库表自动生成POJO(JavaBean)对象

    主类: package bqw.tool; import java.util.ResourceBundle;import java.sql.DriverManager;import java.sql. ...

  9. 计算机视觉和人工智能的状态:我们已经走得很远了 The state of Computer Vision and AI: we are really, really far away.

    The picture above is funny. But for me it is also one of those examples that make me sad about the o ...

  10. Android开发之ProgressDialog与ProgressBar

    ProgressDialog,继承AlertDialog.所以ProgressDialog就是一个在对话框中显示ProgressDialog,并显示进度的文本信息. 并且没有取消和确定按钮,只能通过b ...