思路:设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<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#define Maxn 1010
#define Maxm Maxn*Maxn
#define inf 1e16
#define eps 1e-6
using namespace std;
int vi[Maxn],n;
double dis[Maxn][Maxn],cost[Maxn][Maxn],benefit[Maxn][Maxn],far[Maxn];
struct Point{
double x,y,z;
}p[Maxn];
void init()
{
memset(dis,,sizeof(dis));
memset(vi,,sizeof(vi));
memset(cost,,sizeof(cost));
memset(far,,sizeof(far));
}
double Dis(Point a,Point b)
{
return sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));
}
double prime(double r)
{
int i,j,temp;
double ans,Max;
memset(vi,,sizeof(vi));
ans=;
for(i=;i<=n;i++)
far[i]=inf;
far[]=;
for(i=;i<=n;i++)
{
Max=inf;
for(j=;j<=n;j++)
{
if(!vi[j]&&far[j]<Max)
{
Max=far[j];
temp=j;
}
}
vi[temp]=;
ans+=Max;
// dis[temp][j]-cost[temp][j]
for(j=;j<=n;j++)
{
if(!vi[j]&&far[j]>cost[temp][j]-r*dis[temp][j])
far[j]=cost[temp][j]-r*dis[temp][j];
}
}
return ans;
}
int main()
{
int i,j,a,b,c;
double Max;
while(scanf("%d",&n)!=EOF,n)
{
init();
Max=-inf;
for(i=;i<=n;i++)
{
scanf("%lf%lf%lf",&p[i].x,&p[i].y,&p[i].z);
}
for(i=;i<n;i++)
{
for(j=i+;j<=n;j++)
{
dis[j][i]=dis[i][j]=Dis(p[i],p[j]);
Max=max(dis[i][j],Max);
cost[i][j]=cost[j][i]=fabs(p[i].z-p[j].z);
}
}
double l,r,mid;
l=,r=;
double temp;
while(r-l>eps)
{
mid=(l+r)/;
temp=prime(mid);
if(temp>)
l=mid;
else
r=mid;
}
printf("%.3lf\n",l);
}
return ;
}

poj 2728 最优比率生成树的更多相关文章

  1. Desert King (poj 2728 最优比率生成树 0-1分数规划)

    Language: Default Desert King Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 22113   A ...

  2. poj 2728 最优比例生成树(01分数规划)模板

    /* 迭代法 :204Ms */ #include<stdio.h> #include<string.h> #include<math.h> #define N 1 ...

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

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

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

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

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

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

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

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

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

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

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

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

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

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

随机推荐

  1. maven系列(1)-maven的介绍与安装

    maven的介绍 maven是大名鼎鼎的Apache下的java构建工具. Apache Maven is a software project management and comprehensio ...

  2. STC89c52RC 的EEPROM和AVR的EEPROM

    二者的EEPROM不是一回事,AVR片内的EEPROM是独立于程序存储器的数据存储器,本身不能存储程序并运行,但现代MCU很多支持IAP,利用IAP技术可在程序存储空间实现数据存储即替代EEPROM, ...

  3. rsync服务架设(数据同步|文件增量备份)

        近期由于业务需要,需要将两台服务器数据保持同步.方案有很多,rsync是其中一种解决方案,本文对rsync的安装及配置进行简单说明,其他实现方式有兴趣可以研究.以下是本文提纲,供参考: rsy ...

  4. MEF 编程指南(四):声明导入

    组合部件通过 [System.ComponentModel.Composition.ImportAttribute] 特性声明导入.类似于导出,也有几种不同的方法声明导入,即通过:字段(Fields) ...

  5. 配置文件struts2Struts2配置文件模块化包含(include)与action总结

    本文是一篇关于配置文件struts2的帖子 <include>标签 当Struts配置文件比较多,需要模块化分别或分开成为多个配置文件时,这个功能比较好. 则需要使用<include ...

  6. XSS攻击:SOHU视频XSS漏洞导致其用户成为DDOS肉鸡

    XSS又叫CSS (Cross Site Script) ,跨站脚本攻击.恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入当中Web里面的html代码会被运行,从而达到恶意攻击用 ...

  7. Communications link failure报错的处理

    一.报错的问题: 测试环境在做压力测试的时候爆出错误 com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications l ...

  8. Java 装饰模式 (Decorator)

    装饰模式 动态的将责任附加到对象上.若要扩展功能,装饰者提供了比继承更有弹性的取代方案 代码 package gx.component; /** * 组件:装饰类和被装饰类 都要继承:为了类型保持一致 ...

  9. Cts框架解析(12)-ITargetPreparer

    測试开启前的设备系统准备工作. 接口 /* * Copyright (C) 2010 The Android Open Source Project * * Licensed under the Ap ...

  10. [Angular 2] Directive intro and exportAs

    First, What is directive, what is the difference between component and directive. For my understandi ...