【hdoj 1007】最近点对

博客探讨了如何解决HDOJ 1007题目的最近点对问题。通过采用分治策略,先确定左右半边的最小距离,并在边界附近进行暴力搜索,避免超时。文章提到了一些优化技巧,如根据x轴位置而非距离等分,避免与自身比较,以及在读取输入时使用scanf而非cin以提高效率。此外,还强调了在精度问题上使用double而非float,并利用eps判断浮点数近似相等。
摘要由CSDN通过智能技术生成

题目:传送门

解答:直接暴力求解肯定会超时。此题核心就是求出来最近的一对点之间的距离,即最近点对算法

简要来说就是利用分治的思想,左半边的最小距离,与右半边的最小距离比较,得到一个mindist。再遍历分界线左右 mindist 范围内点的间距,取最小值。

这样,需要暴力的只有分界线周围的点。但是我第一次提交版本还是超时。询问之后是因为优化不够,写在trick中。

这里一些trick:

  1. 分界线:不一定是距离上的等分,根据 x 轴位置排序后进行数量上的等分(取最中间的左右更好;
  2. 取中点暴力时,切记不要与自身比较(距离为0);
  3. 除非有 string,不然不要用 cin,scanf 会快上很多;
  4. 这个我一直很想吐槽……数据精度,做 oj 就别用 float 了,直接上 double
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值