【题解】P1840 Color the Axis 并查集
考虑用并查集维护 每个位置右边第一个黑点的位置。
若每个点所在的并查集的根节点都是其右边第一个黑点的位置,因为黑点右边第一个黑点一定是自己且并查集的根节点均为黑点因此 \(\text{并查集个数} = \text{黑点个数}\) 。
每次从左往右合并区间即可。
复杂度分析:
-
每次访问的点数为 \(O(m)\) 次访问区间端点,同时访问区间 \([l_i,r_i]\) 中的所有黑点。
-
因为每个黑点被访问至多一次,因此访问黑点的复杂度为 \(O(n)\) 。
总的复杂度为 \(O((n+m)\times \beta)\) 。 其中 \(\beta\) 是维护并查集的复杂度。