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

该博客详细介绍了如何解决POJ 2728题——沙漠国王的最优比率生成树问题。通过分析,博主提出利用最小生成树策略,特别是Prim算法来寻找最小成本比。通过二分答案和调整,找到使成本与长度比率最小的解决方案。博客提供了输入输出格式及解题思路。
摘要由CSDN通过智能技术生成

ACM题集:https://blog.csdn.net/weixin_39778570/article/details/83187443
图论:https://blog.csdn.net/weixin_39778570/article/details/87825212
题目链接:http://poj.org/problem?id=2728

题目描述

大卫大帝刚刚成为沙漠国家的国王。为了赢得人民的尊重,他决定在全国各地修建渠道,为每个村庄送水。与他的首都村庄相连的村庄将被供水。作为统治国家的统治者和智慧的象征,他需要以一种最优雅的方式建立渠道。

经过几天的学习,他终于想出了自己的计划。他希望将每英里通道的平均成本降至最低。换句话说,必须将信道的总成本与总长度的比率降至最低。他只需要建立必要的渠道,将水输送到所有的村庄,这意味着将只有一种方法来连接每个村庄到首都。

他的工程师调查了这个国家,并记录了每个村庄的位置和海拔高度。所有渠道必须在两个村庄之间直通,并水平修建。由于每两个村庄所处的海拔高度不同,他们得出结论认为,两个村庄之间的每一条水道都需要一个垂直的提水机,它可以将水提上来,也可以让水流下来。河道的长度是两个村庄之间的水平距离。通道的成本是升降机的高度。你应该注意到,每个村庄在不同的海拔高度,不同的渠道不能共用一个升降机。渠道可以安全交叉,没有三个村庄在同一条线路上。

作为大卫王的首席科学家和程序员,您被要求找到构建通道的最佳解决方案。

输入

有几个测试用例。每个测试用例都从包含数字N(2<=N<=1000)的一行开始,这就是村庄的数量。下列N行中的每一行都包含三个整数:x,y和z(0<=x,y<100000<=z<10000000)。(x,y)是村庄的位置,z是高度。第一个村庄是首都。N=0的测试用例结束输入,不应进行处理。

输出

对于每个测试用例,输出一行包含一个十进制数,这是通道的总开销对总长度的最小比率。这个数字应该四舍五入到小数点后三位数。

分析

很明显是要求一棵最小生成树,使得 s u m ( c o s t ) / s u m ( l e n ) sum(cost)/sum(len) sum(cost)/sum(len)最小
s u m ( c o s t ) / s u m ( l e n ) sum(cost)/sum(len) sum(cost)/sum(len)=ans
===> s u m ( c o s t ) − s u m ( l e n ) ∗ a n s = 0 sum(cost) - sum(len)*ans=0 sum(cost)sum(l

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值