E - K-th Largest Connected Components 解説 by toam

おまけ

\(k\leq 10\) という制約を除いても解けます.軽く紹介しておきます.

\(O(N\log^2 N+Q\log N)\) 解法

方針は元の解説と同じです.各連結成分に含まれる頂点を,集合の中で \(k\) 番目に大きい要素を高速に(例えば \(O(\log N)\) で)取得することができる set で管理することで,マージテクと合わせて \(O(N\log^2 N+Q\log N)\) で解くことができます.

\(O((N+Q)\log N)\) 解法

UnionFind のマージ過程を表す木を作ると,クエリ \(2\) は「頂点 \(u\) の部分木にある頂点のうち \(k\) 番目に大きいものは?」というクエリに言い換えることができます.これは Subtree K-th Max そのものであり,この問題のユーザー解説にあるようにオイラーツアーをして部分木を区間に対応させ,Wavelet Matrix を用いることで \(O((N+Q)\log N)\) で解くことができます.

投稿日時:
最終更新: