分治学习笔记

· · 个人记录

分治学习笔记

主定理

cdq 分治

P3810 三维偏序

曾用动态开点树状数组套动态开点线段树过了。

P2345 MooFest G

+ 两头牛 $i,j$ 发出的音量是 $\max(v_i,v_j)\times\mid x_i-x_j\mid$; + 公式看起来非常复杂,既有取 $\max$ 的操作,又有绝对值操作,似乎两者都不方便直接运算; + 考虑先对 $v$ 升序排序,然后对 $x$ 进行归并排序(也是默认升序),在合并的过程中维护区间内的音量信息; + 根据归并排序的特性,我们只需要考虑如何合并两个已经计算出音量的区间; + 因为原来按 $v$ 升序排序,所以现在左区间的 $v$ 一定都小于右区间的 $v$,$\max$ 容易维护; + 因为对 $x$ 进行归并排序,所以两个区间内的 $x$ 都是升序序列; + 在合并序列的过程中,每加入一个右区间的牛 $i$,新增的音量为 $v_i\times(\sum\limits_{左区间中满足 x_j<x_i 的 j}x_i-x_j+\sum\limits_{左区间中满足 x_j\ge x_i 的 j}x_j-x_i)$,容易用前缀和快速计算。 ### P1228 地毯填补问题 太水了不想记,但是本题还挺考验码力的。 ### P1429 平面最近点对 + 先按 $x$ 排序,然后对 $y$ 归并排序; + 归并排序过程中维护区间最近点对距离 $d$; + 合并时,对于左区间的点 $(x,y)$,可能形成新的最近点对的点一定在左下角为 $(mid,y-d)$,右上角为 $(mid+d,y+d)$ 的矩形内,$mid$ 为左区间最大的 $x$,矩形外要么是左区间的点,已经被考虑过,要么距离一定大于 $d$(横坐标或纵坐标差的绝对值大于 $d$); + 可以证明区间内点的个数不超过 $6$,实际上远远小于这个数; + 先去掉右区间横坐标大于 $mid+d$ 的点(只是暂时去掉,为了方便计算新的 $d$),左区间一个指针 $i$,从头到尾扫,右区间一个指针 $j$,对于每个 $i$,跳回最小的纵坐标使纵坐标大于等于 $y_i-d$,因为已经去掉横坐标大于 $mid+d$ 的点,所以每次往回跳 $j$ 都不会跳超过 $6$ 个点,每次合并计算新的 $d$ 的复杂度为 $O(kn)$,$k$ 不超过 $6$。