与点对有关的CDQ分治(菜鸟笔记)
参考文章
首先要说明的是CDQ是一种思想,并且扩展范围很广。
这里主要说的是与点对有关的CDQ。参考文章说了与CDQ主要解决的三大类问题。第一类就是解决和点对有关的问题。主要是给定一个长度为 n 的序列,然后找出其中满足题意的点对 \((i, j)\)。
CDQ的一般过程如下。
1.首先确定区间的 \(mid\)。
2.对区间划分为 \([l, mid]\) 和 \([mid + 1, r]\)。
点对 \((i, j)\) 的位置关系有三种:
\[l \le i \le mid, \ l \le j \le mid
\]
\[l \le i \le mid, \ mid + 1 \le j \le r
\]
\[mid + 1 \le i \le r, \ mid + 1 \le j \le r
\]
3.对于第一和第三类点对我们将区间划分为 \([l, mid]\) 和 \([mid + 1, r]\) 递归处理,接下来就是自己想方设法解决第二类点对。