[学习笔记] 启发式合并 & DSU on Tree

发布时间 2023-07-09 09:31:46作者: SF71-H

一、启发式合并

启发式合并多用于合并两个集合,现在有这样一个问题:

现在给定 \(n\) 个集合,第 \(i\) 个集合初始只有 \(\{i\}\),要支持集合的合并操作。

如果我们暴力合并,时间复杂度会是 \(O(n^2)\) 的。

参考并查集的按秩合并,考虑将小的集合合并到大的集合上。

考虑计算时间复杂度,容易发现 \(x+y \geq 2\min(x,y)\),所以集合大小可以是以更小的集合的大小的 \(2\) 倍增长的,所以每个元素至多被操作 \(\log n\) 次,总时间复杂度 \(O(n \log n)\)

二、DSU on Tree