我得到了一个严格的S边凸多边形和Q查询来处理。
多边形的所有点和查询点都以 (x,y) 对形式给出。多边形的点按逆时针顺序给出。
上述变量受限于1<=S<=10^6
和1<=Q<=10^5
和1<=|x|,|y|<=10^9
。
对于每个查询,如果给定点位于多边形内,我应该输出 Yes;否则,不。
我尝试使用 O(S)包含测试(光线投射),但它对于更大的测试用例超时,但也没有通过所有初步测试。
显然,实现并没有涵盖所有边缘情况,我了解了这个问题的特定算法,它可以使用二进制搜索回答O(log S)中的每个查询,但我不知道如何从伪代码(第一次做计算几何)。
任何人都可以为我提供涵盖所需时间复杂度(Q log S)内所有边缘情况的算法,或者指导我找到实现它的页面或论文吗?