AtCoder Beginner Contest 314 F問題 A Certain Game
問題
提出解答
解法
「データ構造をマージする一般的なテク」を利用して, この問題を解く.
- 以下のものを用意する.
- を頂点に持つ Union-Find .
- に対して, とする.
- は頂点 を代表元に持つ連結成分におけるベースとなる期待値を記録する.
- は が属する連結成分の代表元を としたときの と, その時点での勝利回数の期待値との差を記録する.
- に対して, を の一要素のみからなるリストとする.
- の順に以下を行う.
- において, が属する連結成分の頂点数が, に属する連結成分の頂点数より大きいならば, を入れ替える.
- を における の代表元, における代表元に置き換える.
- において, が属する連結成分の頂点数をそれぞれ とする.
- の各頂点 について, に を加算する.
- に を加算する.
- に の全ての要素を付け加える.
- において, を併合する.
最後に残る唯一の連結成分の代表現を としたとき, のそれぞれに対する正解は, である.