公式

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)\) 時間で問題に答えることができます。

投稿日時:
最終更新: