【最优比率生成树】poj2728 Desert King
最优比率生成树教程见http://blog.csdn.net/sdj222555/article/details/7490797
#include<cstdio>
#include<cmath>
#include<cstring>
#include<algorithm>
using namespace std;
struct Point{double x,y,h;}p[];
int n;
bool vis[];
double DIS[][],H[][],map[][],minn[]/*minn[i]存放蓝点i与白点相连的最小边权*/;
inline double sqr(const double &x){return x*x;}
inline double dis(const Point &a,const Point &b){return sqrt(sqr(a.x-b.x)+sqr(a.y-b.y));}
inline double prim(const double &rate)
{
double sum=;
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
map[i][j]=H[i][j]-DIS[i][j]*rate;//重设边权
memset(vis,false,sizeof(vis));
memset(minn,0x7f,sizeof(minn));
minn[]=;
for(int i=;i<=n;i++)
{
int v=;
for(int j=;j<=n;j++)
if(!vis[j]&&minn[j]<minn[v])
v=j;
vis[v]=true;
for(int j=;j<=n;j++)
if(!vis[j])
minn[j]=min(minn[j],map[v][j]);
}
for(int i=;i<=n;i++)
sum+=minn[i];
return sum;
}
int main()
{
while()
{
scanf("%d",&n);
if(!n)
break;
for(int i=;i<=n;i++)
scanf("%lf%lf%lf",&p[i].x,&p[i].y,&p[i].h);
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
{
DIS[i][j]=dis(p[i],p[j]);
H[i][j]=fabs(p[i].h-p[j].h);
}
double l=0.0,r=100.0;
while(r-l>0.0000001)//二分比率
{
double m=(l+r)/;
if(prim(m)>=)
l=m;
else
r=m;
}
printf("%.3f\n",r);
}
return ;
}
【最优比率生成树】poj2728 Desert King的更多相关文章
- 最优比率生成树 poj2728
Desert King Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 28407 Accepted: 7863 Desc ...
- POJ2728 Desert King 【最优比率生成树】
POJ2728 Desert King Description David the Great has just become the king of a desert country. To win ...
- [POJ2728] Desert King 解题报告(最优比率生成树)
题目描述: David the Great has just become the king of a desert country. To win the respect of his people ...
- poj2728 Desert King(最小生成树+01分数规划=最优比率生成树)
题意 n个点完全图,每个边有两个权值,求分数规划要求的东西的最小值. (n<=1000) 题解 心态炸了. 堆优化primT了. 普通的就过了. 我再也不写prim了!!!! 咳咳 最优比率生成 ...
- POJ 2728 Desert King 最优比率生成树
Desert King Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 20978 Accepted: 5898 [Des ...
- poj 2728 Desert King (最优比率生成树)
Desert King http://poj.org/problem?id=2728 Time Limit: 3000MS Memory Limit: 65536K Descripti ...
- POJ 2728 Desert King ★(01分数规划介绍 && 应用の最优比率生成树)
[题意]每条路径有一个 cost 和 dist,求图中 sigma(cost) / sigma(dist) 最小的生成树. 标准的最优比率生成树,楼教主当年开场随手1YES然后把别人带错方向的题Orz ...
- POJ 2728 Desert King(最优比率生成树 01分数规划)
http://poj.org/problem?id=2728 题意: 在这么一个图中求一棵生成树,这棵树的单位长度的花费最小是多少? 思路: 最优比率生成树,也就是01分数规划,二分答案即可,题目很简 ...
- [转]01分数规划算法 ACM 二分 Dinkelbach 最优比率生成树 最优比率环
01分数规划 前置技能 二分思想最短路算法一些数学脑细胞? 问题模型1 基本01分数规划问题 给定nn个二元组(valuei,costi)(valuei,costi),valueivaluei是选择此 ...
随机推荐
- Winform Socket通信
Socket相关概念[端口] 在Internet上有很多这样的主机,这些主机一般运行了多个服务软件,同时提供几种服务.每种服务都打开一个Socket,并绑定到一个端口上,不同的端口对应于不同的服务(应 ...
- Bower A package manager for the web
Bower can manage components that contain HTML, CSS, JavaScript, fonts or even image files. Bower doe ...
- 创建Fragment和传递数值
下面在扩展一下创建Fragment和传递数值 如果我们不需要传递数值,那就直接可以在宿主activity中,跟平常一样创建fragment,但是如果我们需要传递数据的话,可以使用newInstance ...
- java封装示例代码
package com.imooc; public class Telphone { private float screen; private float cpu; private float me ...
- Java线程(一)
1. java什么叫线程安全?什么叫不安全? 就是线程同步的意思,就是当一个程序对一个线程安全的方法或者语句进行访问的时候,其他的不能再对他进行操作了,必须等到这次访问结束以后才能对这个线程安全的方法 ...
- monkey测试===monkeyrunner测试教程(2)
我先引入一段代码: #test.py from com.android.monkeyrunner import MonkeyRunner as mr device=mr.waitForConnecti ...
- OPENSOLARIS source
http://blog.csdn.net/nemo2011/article/details/8543220 http://fxr.watson.org/fxr/source/?v=OPENSOLARI ...
- HDU 5117 Fluorescent
题目链接:HDU-5117 题意为有n盏灯,m个开关,每个开关控制着\( k_{i} \)灯.X为最后亮着的灯的个数,要求出\( E(X^{3} ) * 2^{M} mod (10^9 + 7) \) ...
- SQl server 2008 附加数据库失败,错误:5120
通过附加功能添加现成的数据库是非常方便的,然而有时会出现附加数据库失败.那么,我们该如何解决此问题? 有两种解决方法 [第一种方法] 第一步:找到要添加数据库的.mdf文件,点击右键,选择属性. 第二 ...
- Django基础之form组件
Form介绍 我们之前在HTML页面中利用form表单向后端提交数据时,都会写一些获取用户输入的标签并且用form标签把它们包起来. 与此同时我们在好多场景下都需要对用户的输入做校验,比如校验用户是否 ...