[DS记录]BZOJ2961: 共点圆(+4140: 共点圆加强版)
command_block · · 个人记录
题意:
-
加入一个圆心为
(c,d) ,过原点的圆,圆心纵坐标为正,横坐标非0。 -
给一个点
(a,b) ,要求判定这个点是否在所有圆内。
圆并不好处理,咱也不会圆的反演,而且听说严重掉精度……
题目给出了过原点的奇怪条件,我们还是先推推式子。
这个判据可以看做 : 点
可能会有
现在问题就变成了:
-
加入一个半平面
-
询问点
(a,b) 是否在所有半平面内
考虑静态的问题,我们可以先排序再单队建立凸包。
对所有询问按照
现在要变成动态,没有说强制在线,加一个CDQ分治就好了。
注意在CDQ中使用归并,复杂度
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
现在考虑加强版 : 强制在线。
写一个二进制分组同时维护
查询不能批量做了,在这些凸包上二分即可。
复杂度