别人解题报告的链接:

http://blog.sina.com.cn/s/blog_691190870101626q.html

说明一下关于精度的问题,当结果是精确到小数点后3为,你自然要把误差定为至少10^(-4),我定的是10^(-8)````这里多定点没事的···

然后对于POJ上的提交,如果是用C++提交,可以写printf("%.3lf\n",ans);

但是如果是用的G++提交,就得用printf("%.3f\n",ans);

当然ans定义的是double型的·····

补充的解题报告链接:

http://blog.csdn.net/sdj222555/article/details/7490797

 //#define debug
#include <cstdio>
#include <cmath>
#include <cstring>
using namespace std;
#define N 1005
#define eps 1e-8
#define INF 1e300
struct point
{
int x,y,z;
} p[N];
double dis(point a,point b)
{
double t = (a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y);
return sqrt(t);
}
struct arc
{
double len,cost;
} edge[N][N];
double lowcost[N];
int pre[N];
bool vis[N];
int n;
double prim(double d)
{
double tl =,tc=,ra;
memset(vis,,sizeof(vis));
vis[] = ;
for(int i=; i<n; ++i)
{
lowcost[i] = edge[][i].cost-d*edge[][i].len;
pre[i] = ;
}
for(int k=; k<n; ++k)
{
double mi = INF;
int v;
for(int i=; i<n; ++i)
{
if(!vis[i] && lowcost[i] < mi)
{
mi = lowcost[i];
v = i;
}
}
vis[v] = ;
tc += edge[v][pre[v]].cost;
tl += edge[v][pre[v]].len;
for(int i=; i<n; ++i)
{
if(!vis[i] && lowcost[i] > edge[v][i].cost-d*edge[v][i].len)
{
lowcost[i] = edge[v][i].cost-d*edge[v][i].len;
pre[i] = v;
}
}
}
ra = tc/tl;
return ra;
}
int main()
{
#ifdef debug
freopen("in.c","r",stdin);
#endif
while(scanf("%d",&n),n)
{
for(int i=; i<n; ++i)
scanf("%d%d%d",&p[i].x,&p[i].y,&p[i].z);
for(int i=; i<n; ++i)
{
for(int j=i+; j<n; ++j)
{
edge[i][j].len = edge[j][i].len = dis(p[i],p[j]);
edge[i][j].cost = edge[j][i].cost = fabs(p[i].z-p[j].z);
}
}
double r=;
while(true)
{
double t = prim(r);
if(fabs(t-r) < eps) break;
r = t;
}
printf("%.3f\n",r);
}
return ;
}

最优比率生成树 POJ 2728 迭代或者二分的更多相关文章

  1. POJ.2728.Desert King(最优比率生成树 Prim 01分数规划 二分/Dinkelbach迭代)

    题目链接 \(Description\) 将n个村庄连成一棵树,村之间的距离为两村的欧几里得距离,村之间的花费为海拔z的差,求花费和与长度和的最小比值 \(Solution\) 二分,假设mid为可行 ...

  2. POJ 2728 Desert King(最优比率生成树 01分数规划)

    http://poj.org/problem?id=2728 题意: 在这么一个图中求一棵生成树,这棵树的单位长度的花费最小是多少? 思路: 最优比率生成树,也就是01分数规划,二分答案即可,题目很简 ...

  3. poj 2728 Desert King (最优比率生成树)

    Desert King http://poj.org/problem?id=2728 Time Limit: 3000MS   Memory Limit: 65536K       Descripti ...

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

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

  5. POJ 2728 Desert King 最优比率生成树

    Desert King Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 20978   Accepted: 5898 [Des ...

  6. [转]01分数规划算法 ACM 二分 Dinkelbach 最优比率生成树 最优比率环

    01分数规划 前置技能 二分思想最短路算法一些数学脑细胞? 问题模型1 基本01分数规划问题 给定nn个二元组(valuei,costi)(valuei,costi),valueivaluei是选择此 ...

  7. [POJ2728] Desert King 解题报告(最优比率生成树)

    题目描述: David the Great has just become the king of a desert country. To win the respect of his people ...

  8. [USACO]地震 (二分答案+最优比率生成树详解)

    题面:[USACO 2001 OPEN]地震 题目描述: 一场地震把约翰家的牧场摧毁了, 坚强的约翰决心重建家园. 约翰已经重建了N个牧场,现在他希望能修建一些道路把它们连接起来.研究地形之后,约翰发 ...

  9. 2018.09.12 earthquake(最优比率生成树)

    描述 地震已经破坏了农夫约翰所有的农场以及所有连接农场的道路.作为一个意志坚强的人,他决定重建所有的农场.在重建全部N(1 <= N <= 400)个农场之前,首先必须把所有农场用道路连接 ...

随机推荐

  1. C语言的的free和c++的delete的区别

    首先free对应的是malloc:delete对应的是new:free用来释放malloc出来动态内存,delete用来释放new出来的动态内存空间. 应用的区别为: 1. 数组的时候int *p=( ...

  2. dns未设置 PHP Warning: file_get_contents():php_network_getaddresses: getaddrinfo failed:

    php通过去访问外部网站时,出现以下提示: PHP Warning: file_get_contents(): php_network_getaddresses: getaddrinfo failed ...

  3. ubuntu安装环境软件全文档

    1,安装apace2: sudo apt-get install apache2 2谷歌浏览器的安装:sudo apt-get install  chromium-browser-dbg 3,国际版Q ...

  4. HDU 2157 矩阵幂orDP

    How many ways?? Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)T ...

  5. 一、final关键字

    final关键字修饰:类,方法,基本类型变量,引用,具有不同的意思 1.final修饰类 表示该类不能被继承 package property; public final class Hero ext ...

  6. 变形CSS3

    <!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head>    < ...

  7. form数据请求参数格式

    请求后台参数格式问题 当请求后台传递参数时,有多中类型,而每一种都需要前后台进行配合,而这有时候会很简单,有时候却十分困难,记录一下,以备后期深究 数据 后台需要的数据 form表单 嵌套数据,第二层 ...

  8. en_a

      1◆ai ay ei     2◆ au aw ɔː     3◆ a   eɪ æ ɑː ɔː ʌ   4◆ ar   ɔː ɑː ɜː   5◆ al ɑː ɔː   6◆ are air   ...

  9. [C#]C#彩色扭曲验证码

    该验证码生成类集合了网上大部分的验证码生成类的精华,博采众长并多次改进,现在已经形成了可在生产环节中使用的验证码. 该验证码加入了背景噪点,背景噪点曲线和直线,背景噪点文字以及扭曲,调暗,模糊等.完全 ...

  10. 关于这个 SDK.InvalidRegionId : Can not find endpoint to access

    String product = "Dysmsapi";//短信API产品名称(短信产品名固定,无需修改)       TM 调试了半天,一直报错.原来是因为我改了上面的 Dysm ...