题目
给一个n(n<=2e5)个点的凸包(显然无三点共线),点序按逆时针序给出
q(q<=2e5)个询问,第i次询问点(xi,yi)是否在凸包内/外/上,
在凸包上输出ON,在凸包内输出IN,在凸包外输出OUT
对于所有点(x,y),每一维在[-1e9,1e9]之间
思路来源
https://www.cnblogs.com/Felix-F/p/3249568.html
SGU 253 log(n)判点在凸包内 二分_9974的博客-优快云博客
题解
十年前的老题sgu253了,被abc296又翻出来了

如图,逆时针序,p[0]和每个点连一条射线,将凸包划分为若干个三角形
二分询问点是否在其中某个三角形内,具体来说,
将逆时针每个点依次标号0到n-1,
初始令l=0,r=n-1(实际不会取到r),二分到m时,
计p[0]p[m]为右射线,p[0]p[m+1]为左射线,p[m]p[m+1]为上射线,
在某个三角形内部或在三角形上,当且仅当:
①点tp,即向量p[0]tp,在右射线逆时针方向
②点tp,即向量p[0]tp,在左射线顺时针方向

该文介绍了如何判断一个点是否在一个给定的逆时针顺序的凸包内的算法。通过二分查找,确定点位于哪个三角形内或在边界上,利用叉积判断点的位置关系。此方法适用于处理大量查询,时间复杂度为O(logn)。
最低0.47元/天 解锁文章
756

被折叠的 条评论
为什么被折叠?



