公式
E - Mancala 2 解説 by kyopro_friends
ボールを配る操作を \(N\) 回ずつまとめることで、操作は次のようになります。
- 箱 \(B_i\) の中のボールを全て取り出し、手に持つ。
- 手に持っているボールの個数を \(X\) として、全ての箱に\(\left\lfloor\frac{X}{N}\right\rfloor\) 個ずつボールを入れる。
- まだ手に持っているボールの個数を \(X\) として、箱 \(B_i+1\) から箱 \(B_i+X\) に \(1\) 個ずつボールを入れる。
(\(B_i+X\geq N\) のとき、「箱 \(B_i+1\) から箱 \(B_i+X\)」は「『箱 \(B_i+1\) から箱 \(N-1\)』及び『箱\(0\) から箱 \(B_i+X-N\)』」を意味する)
各箱に入っているボールの個数を表す配列に対するこれらの処理は \(1\) 点更新と区間加算になので、遅延セグメントツリーなどのデータ構造を用いることで \(O(\log N)\) 時間で処理でき、全体で \(O((M+N)\log N)\) 時間で問題に答えることができます。
投稿日時:
最終更新: