sszx
dzy
20%
分治
分而治之
归并排序
分治思想的最简单体现,将具有特征的问题分解成子问题,子问题可用同样方法(即递归)处理。对于子问题之间的联系,特殊处理。
求逆序对
与归并排序密不可分,例:
1 2 3 4 1 2 3 4
1 2 3 4 5 6 7 8
主定理
求递归式的时间复杂度
平面上的分治
在平面上按x坐标排序分治,再在归并排序过程中考虑y坐标。
练习题
CF480E
树分治
求树上距离不大于k的点对个数,即路径。树分治就是解决树上路径问题的高效算法。
分为点分治和边分治
练习题
SPOJ FTOUR2(求选择不超过k个黑点的路径最大权值):点分治
BZOJ2152(求2个点之间路径权值和是3的倍数的概率):
BZOJ1758():分数规划+长链剖分
CDQ分治
CDQ分治需要题目支持离线算法,且修改操作互不影响
例题:陌上花开(BZOJ3262)
Des:求比每个元素的三种属性都小的元素个数
Sol:CDQ分治
练习题
BZOJ1176(维护矩阵,支持单点修改和范围查询):
BZOJ3295,CQOI2011(动态逆序对:CDQ分治经典例题,删除元素的同时求逆序对个数):
BZOJ2716/2648(SJY摆棋子:在棋盘上放下黑棋和白棋,对于白棋输出这个白棋和离它最近的黑棋之间的距离,此处的近和距离指曼哈顿距离):二维偏序||kdtree
总结
题单:https://www.luogu.com.cn/training/57283