#zXSCSlydlt60x6203. 沙漠之王 最优比率生成树

沙漠之王 最优比率生成树

好的,这是整理好的题面,不含解题思路,只包含样例解释。


题目描述

大卫大帝建立了一个沙漠帝国,为了赢得人民的尊重,他决定在全国各地建立渠道,为每个村庄提供水源。

与首都相连的村庄将得到水资源浇灌。

他希望构建渠道,使得 单位长度的平均成本降至最低
即:渠道的总成本与总长度的比值最小。

他只希望建立必要的渠道,为所有村庄供水,这意味着每个村庄都有且仅有一条路径连接至首都(即形成以首都为根的树)。

工程师调查发现:

  • 所有渠道必须直接在两个村庄之间水平建造。
  • 任意两个村庄的高度均不同,每个渠道都需要一个垂直升降机,使得水能够上升或下降。
  • 建设渠道的成本只和升降机的高度差有关(即两个村庄的高度差)。
  • 不同渠道之间不能共享升降机。

输入格式

输入包含多组测试数据。
每组测试数据第一行包含整数 NN,表示村庄(包括首都)总数。
接下来 NN 行,每行三个整数 x,y,zx, y, z,描述一个村庄的位置坐标 (x,y)(x,y) 和高度 zz
第一个被描述的村庄即为首都。
当输入一行为 00 时,表示输入终止。

输出格式

每组数据输出一个结果,每个结果占一行。
结果为一个保留三位小数的实数,表示渠道的总成本与总长度的比值的最小值。

数据范围

  • 2N10002 \le N \le 1000
  • 0x,y<100000 \le x, y < 10000
  • 0z1070 \le z \le 10^7

输入样例

4
0 0 0
0 1 1
1 1 2
1 0 3
0

输出样例

1.000

样例解释

村庄信息(包括首都)

  1. 首都:位置 (0,0),高度 0
  2. 村庄 2:位置 (0,1),高度 1
  3. 村庄 3:位置 (1,1),高度 2
  4. 村庄 4:位置 (1,0),高度 3

渠道成本 = 连接两个村庄的高度差的绝对值。
渠道长度 = 两个村庄之间的平面欧几里得距离。

我们要找一棵生成树(以首都为根),使得 $\frac{\sum |z_u - z_v|}{\sum \sqrt{(x_u - x_v)^2 + (y_u - y_v)^2}}$ 最小。


计算示例(非唯一最优解,仅解释为何可能是 1.000):
连接首都 (0,0,0) 与村庄 2 (0,1,1):
成本 = |0-1| = 1,长度 = |0-0|+|1-0|? 不对,欧几里得距离 = 1。
比值 = 1/1 = 1.0

连接村庄 2 (0,1,1) 与村庄 3 (1,1,2):
成本 = |1-2| = 1,长度 = 1,比值 = 1.0

连接村庄 3 (1,1,2) 与村庄 4 (1,0,3):
成本 = |2-3| = 1,长度 = 1,比值 = 1.0

总成本 = 1+1+1=3,总长度 = 1+1+1=3,比值 = 3/3 = 1.000。

这个方案确实是一棵树(4个点3条边),并且连通所有村庄(首都 0 → 村庄 2 → 村庄 3 → 村庄 4)。

可以验证,在这个例子中,无论怎么选树,比值都可能是 1.000(因为每个边的成本/长度恰好都是 1),因此输出 1.000。


注意:本题的答案要求保留三位小数输出。