与点对有关的CDQ分治(菜鸟笔记)

dkdklcx / 2023-08-12 / 原文

参考文章


      首先要说明的是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]\) 递归处理,接下来就是自己想方设法解决第二类点对。