别人解题报告的链接:

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. 怎么运行cocos2dx 3.x simulator?

    1.simulator的好处是: 快速切换分辨率:F5快速重新启动项目: 这对于脚本语言来说都是很方便快捷的. 2.涉及到显示参数的文件有两个: ①lang,这个是菜单的语言文件,如果没有这个文件的话 ...

  2. 错误代码0x00000001,好多软件连不了网,求助~(WIN7/win8/win9/win10)

    解决办法: 以管理员身份运行命令行,在弹出的窗口中运行如下命令: netsh winsock reset catalog netsh int ip reset reset.log hit 让被阻止了的 ...

  3. 20170813pptVBA批量插入图片

    Sub AddSldIn() Dim Pre As Presentation Dim NewSld As Slide Set Pre = Application.ActivePresentation ...

  4. vijos 1046 floyd求最小环

    // 转自vijos题解 最小环问题<1>朴素的算法:令e(u,v)表示u和v之间的连边,再令min(u,v)表示,删除u和v之间的连边之后,u和v之间的最短路最小环则是min(u,v) ...

  5. 关于二级指针的使用(使用node指针建树)

    struct node { int v; node *l,*r; }*p; 使用二级指针建树的话,如果p是非全局变量且一开始没有指向变量的话递归建树时必然要传递参数,但是如果只是简单的build(no ...

  6. C# 中的时间(DataTime)

    在做报表或查询的时候,常常会预设一些可选的日期范围,如本周.本月.本年等,利用 C# 内置的DateTime基本上都可以实现这些功能. 当前时间: DateTime dt = DateTime.Now ...

  7. 清除mac出现的.DS_Store文件

    一.什么是.DS_Store文件 在 Mac OS X 系统下,大部分文件夹中都包含 .DS_Store 隐藏文件,这里保存着针对这个目录的特殊信息和设置配置,例如查看方式.图标大小以及这个目录的一些 ...

  8. Linux fcntl函数设置阻塞与非阻塞

    转自http://www.cnblogs.com/xuyh/p/3273082.html 用命令F_GETFL和F_SETFL设置文件标志,比如阻塞与非阻塞 F_SETFL     设置给arg描述符 ...

  9. 基于高通 qca4531 mp3 demo板 双系统引导设计

    为了系统和稳定性,flash上有两套系统.在uboot引导阶段会根据当前的bootslot变量,决择运行哪套系统.进入系统之后,会自动挂载数据区,然后启动开关的应用程序. 如上图所示系统有两块存储芯片 ...

  10. python元组()小括号

    names = ('jack','rose','tom','jerry','james','jerry') print(names) print(names[0]) #使用元组中的元素 print(n ...