码迷,mamicode.com
首页 > 其他好文 > 详细

旋转卡壳

时间:2019-12-04 13:40:34      阅读:83      评论:0      收藏:0      [点我收藏+]

标签:line   ref   极角   https   包含   mat   ble   依次   证明   

例题:P1452.

题意:找到所有点对的最大距离。

一个凸包可以把所有点给包含进去,很明显最大距离点对是凸包上的点的点对。于是现在求凸包的最长直径。

旋转卡壳

依次按照极角枚举凸包上的边,找出与这条边最远距离的顶点,寻找这个点可以通过叉积算三角形面积实现。很明显顺次枚举边时,顶点也是顺次移动的,可以证明移动顶点复杂度为\(O(n)\)。对于每个边和其对应顶点所形成的三角形,答案与这三条边取\(max\)就行了。

为什么对于一条边找最远顶点一定包含了最长直径?可以发现直径对应的两个顶点,一定存在一个包含了这两个点和这两个点中某个点的相邻点的一个三角形,那么也一定会更新到这条边。

旋转卡壳

标签:line   ref   极角   https   包含   mat   ble   依次   证明   

原文地址:https://www.cnblogs.com/redegg/p/11982037.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!