star way to heaven

本文介绍了一道题目,要求求解小w远离星星和边界的最小距离最大值。作者最初尝试用并查集和二分法,但意识到存在特殊情况,于是转向使用Prim算法。通过将边界加入集合并运行Prim算法找到最小距离点,更新连接点的距离,直至添加第二个边界,此时的最大值即为答案。代码已附带注释。
摘要由CSDN通过智能技术生成

题目描述

小 w 伤心的走上了 Star way to heaven。
到天堂的道路是一个笛卡尔坐标系上一个 n*m 的长方形通道 顶点在 (0,0) 和 (n,m) 。
小 w 从最左边任意一点进入,从右边任意一点走到天堂,最左最右的距离为 n,上下边界距离为m 。
其中长方形有 k 个Star ,每个 Star 都有一个整点坐标,Star 的大小可以忽略不计。
每个 Star 以及长方形上下两个边缘宇宙的边界都有引力,所以为了成功到达 heaven 小 w 离他们越远越好。
请问小 w 走到终点的路径上,距离所有星星以及边界的最小距离最大值可以为多少?

额,这个题意比较清楚,就是这个小w很想去天堂,但是路上会有讨厌的星星,他想离这些星星越远越好,让我们求距离所有星星以及边界的最小距离最大值。

思路解析

一开始,我想的是把范围会重叠星星们放入一个并查集中,然后再用二分求答案。

然而,做到一半,我突然发现,万一几颗星星在同一个并查集并且它们的总半径恰好等于 m / 2 m/2 m/2 ,那这就意味着,它们直接把路给“堵”着,这道题就用二分做肯定会被卡掉😱。

后来觉得既然它在《最小生成树》里面,后来又想到了用Prim算法。原谅我太蒟蒻(逃

把边界加入集合,再用Prim跑最短路,找距离最小的点然后加入集合,将与之相连的点的距离更新。

直到我们最后添加第二个边界到集合中,这时我们就应该输出了,其实这时的最大值为恰好不能走过去时的最小 d i d_i di

又:一定要注意一下 d o u b l e double double

(实在不了解你可以看看代码嘛)

注释代码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值