极角排序
文章平均质量分 55
hesorchen
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
POJ1106极角排序
题目POJ Transmitters给出若干个点和一个半圆,半圆可以绕着圆心任意旋转,问最多能覆盖多少个点。解题思路距离圆心的距离大于半径的点可以直接先排除掉。将剩余的点进行极角排序,然后用一个双端队列维护能被半圆覆盖的点,当队首和当前处理点的角度大于π\piπ时,弹出队首元素。期间队列最大的size就是答案。需要注意的是,当前处理点极角接近π\piπ时,最开始邻近−π-\pi−π处的点也会有贡献,可以将所有点复制一份加到后面,并将复制的点极角加上2π2\pi2π。时间复杂度O(nlogn)O原创 2021-10-29 10:10:55 · 255 阅读 · 0 评论 -
极角排序
极角排序在平面内取一个定点O,叫极点,引一条射线Ox,叫做极轴,再选定一个长度单位和角度的正方向(通常取逆时针方向)。对于平面内任何一点M,用ρ表示线段OM的长度(有时也用r表示),θ表示从Ox到OM的角度,ρ叫做点M的极径,θ叫做点M的极角,有序数对 (ρ,θ)就叫点M的极坐标。那么给定平面上的一些点,把它们按照一个选定的极点排成顺(逆)时针。代码实现cmath库中有一个函数atan2(y,x)atan2(y,x)atan2(y,x),返回的值域为(−π,π](-\pi,\pi](−π,π]。可原创 2021-10-28 10:33:00 · 509 阅读 · 0 评论
分享