网站首页 全球最实用的IT互联网站!

人工智能P2P分享Wind搜索发布信息网站地图标签大全

当前位置:诺佳网 > 软件工程 > 其他技术区 > 算法与数据结构 >

CF333E Summer Earnings

时间:2025-09-24 10:34

人气:

作者:admin

标签:

导读:推歌:Between Worlds 很有意思的题。 注意到题目其实就是选三个点使得两两之间欧几里得距离最小值最大,很容易就有 \(O(n^3)\) 做法。 常规方法是注意到本题时限极大,而最小值最大又是...

推歌:Between Worlds

很有意思的题。

注意到题目其实就是选三个点使得两两之间欧几里得距离最小值最大,很容易就有 \(O(n^3)\) 做法。

常规方法是注意到本题时限极大,而最小值最大又是可以从大到小枚举最小值的,因此把所有的点对按照距离排序从大到小扫,每次就是对 \((i,j)\) 求是否有 \(k\) 使得 \((i,k)\)\((k,j)\) 的距离都比它大,可以很容易地用 Bitset 维护,\(O(\frac{n^3}{\omega})\) 即可通过。

但是有没有不靠 \(\omega\) 的方法呢?让我们使用一些中学学过的数学知识。

初中有一句话叫做“大角对大边”(其实就是正弦定理)而题目的问题又等价于求三角形中最短边的最大值,所以直接考虑枚举一个点 \(P\) 作为顶点。我们发现三角形的最小角一定是 \(\le \frac{\pi}{3}\) 的,如果以 \(P\) 为顶点的 \(\angle APB\ge \frac{\pi}{3}\),那么此三角形的最短边一定在 \(PA\)\(PB\) 中。

因此固定 \(A\) 后,我们要找的 \(B\) 就是使得 \(\angle APB\ge \frac{\pi}{3}\)\(PB\) 最短的点,这是一个静态区间最小值!

然后我们就可以直接做了。枚举 \(P\),将剩余的点以 \(P\) 为原点进行极角排序,ST 表预处理区间最小值,枚举 \(A\) 并快速求 \(B\)。由于每个点都会作为顶点出现所以不会有哪组最短边没扫到的情况。时间复杂度 \(O(n^2\log n)\)

感觉其实并不算数学题?只是用了基础的几何知识而已。

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信