按时间分治:
- CDQ分治
解决大多可以归化为k维偏序问题的离线算法。
K维偏序问题的bitset解法:
[已完成]例题1:CF 70 D ,支持动态加点的凸包问题,可以使用CDQ分治变成离线.
[已完成]例题2:CF 848C, 设一段区间的价值为区间内每个出现过的数,最后一次出现的位置-第一次出现的位置之和。要求支持单点修改和区间查询。
解法:把每个 ai 看作二元组 (i,prevai),则 ai 在区间内的贡献为 ∑l≤i,prevai≤ri−prevai,中间的部分均消去,剩余的贡献恰为题目所求。因此,时间、i、prevai 组成了三维数点问题的三个维度,套用 CDQ 分治解决。
例题3:【UOJ#50】【UR #3】链式反应(分治FFT,动态规划) - 线段树分治
动态图连通性.
对每个物品求不包含它的01背包.
[已完成]【HNOI】城市建设:支持修改边权,求 MST 边权和.
对于一段时间区间 [l,r],我们把这段区间中修改到的边称为 待修边,其余的边称为 固定边。
设 solve(l,r,V,E) 表示当前分治的时间区间为 (l,r),缩点后的连通块集合为 V,不确定是否会出现在 MST 中的固定边集合为E。初始 V=1,2,…,n,E=∅。
在我们递归到某个儿子前,只在当前节点的另一个儿子中修改的待修边会变为固定边,将它们加入 E。
对于剩余的待修边,用它们尽可能的连接 V 中的连通块;此时若存在两点 (u,v) 尚未连通,那么,任何待修边都不可能使它们联通,可以直接用 E 中的边将这些连通块连起来,并缩点至任意两点可以通过待修边相连。
由于待修边最多有 O(r−l) 条,此时的 V 大小也是 O(r−l) 的。
对于剩余的 E 中的边,按权值排序后,用它们尽可能的连接 V 中的连通块;此时若存在一条边的端点已经连通,则无论待修边的权值如何,这条边都不可能在 MST 中,可以直接从 E 中删除。
由于此时 V 大小已经为 O(r−l),E 中剩余的边最多保留一棵生成树,因此此后 4E$ 的大小也是 O(r−l)。
我们发现,递归到任何一个节点时,耗费的时间都是 O(r−l) 级别的,因此总复杂度为 O(nlog2n) - 二进制分组
动态凸包,强制在线.
[已完成]UOJ 191 Unknown - 整体二分
[已完成]【LG1527】[国家集训队]矩阵乘法
CF 102354 B
调和级数枚举约数+整体二分+莫比乌斯反演。 - 带权⼆分/决策单调性
设 a<b<c<d 如果 w(a,c)+w(b,d) 比 w(a,d)+w(b,c) “不会更劣”,就称此类 dp 满足四边形不等式。满足四边形不等式的 dp 均具有决策单调性。(充分,但不必要)
[已完成]CF 321E 有一个沿主对角线对称的非负方阵,把它的主对角线分成 k 块,每块的权值是对应子方阵的和。求最小代价。
由于方阵非负,决策单调性显然。
用分治处理决策单调性的方法可以做到O(nklogn)
NOI 2009 诗人小G.
CF 868F 将一个数列分成k段,每段的代价是相同的数字的对数。 求代价总和最⼩。
给一个凸包,选 k 个点使得围成的面积最大。
考虑枚举起点,可以带权二分+决策单调性 O(nlogwlogn)求出确定起点的答案,期望随机 kn 次就可以得到最优答案。