[ABC263Ex] Intersection 2 题解
Albatross_LC · · 题解
我们可以使用二进制搜索来找到答案.在每次迭代中,我们解决以下子问题:
二维平面上有
N 行.其中两个留置权的交点有多少在x^2+y^2=r^2?
二进制搜索需要解的上界.解决方案如下:
是
现在我们考虑子问题.
找到每个连线的
在二维平面上有一个圆.给您一些端点位于圆上的线段.求出这些线段的交点数.
我们可以在某个点上切割圆圈,将问题重新表述如下:
给您
N 段,第i 段是[L_i,R_i] .找到对(i,j) 的数量,使1≤i,j≤N 和L_i<L_j<R_i<R_j .
这个问题可以通过以下方式解决.
- 维护一个长度为
\max R 的数组,每个元素初始化为0 .- 按
R_i 的升序对段进行排序.按排序顺序处理每个段:
- 将数组的
L_i 值添加到答案中.- 将
+1 添加到第(L_i+1) 到(R_i-1) 数组的第几个元素
时间复杂度
时间总复杂度