【学习笔记】启发式合并分裂

启发式合并就是一个思想,把小的往大里合。

考虑每个元素所在的集合,每次被暴力合并后大小一定翻倍,那么每个元素最多被合并 \(O(\log n)\) 次,于是总复杂度就是 \(O(n \log n)\) 的。

树上启发式合并

难维护的子树节点信息可以树上启发式合并。

一般会用到 set,map,或者需要手写平衡树进行维护信息。

启发式分裂

有一个区间,每次把它分裂成两半,然后计算两半之间的答案。

直接计算显然是 \(n^2\) 的,但是我们每次可以用较小的一遍去计算较大的一边的贡献。

因为这东西本质上就可以看作是一个树形结构,所以其实和树上启发式合并是一样的。

单调栈/笛卡尔树

对于区间 \(\min / \max\) 的问题,\(R_i-L_i\) 的总和是 \(n^2\) 级别的,但是 \(\min\{i-L_i, R_i-i\}\) 就是 \(n \log n\) 级别的。

posted @ 2022-12-17 22:18  APJifengc  阅读(440)  评论(5编辑  收藏  举报