ABC333-Fが難しかったのでメモ

ABC333-F Bomb Game 2 https://atcoder.jp/contests/abc333/tasks/abc333_f

全ての人が消える確率が同じなので、自分の手番になったときに、そこから自分が最後の一人になる確率は、自分以外にあと何人残っているかだけで決まる。そこで、自分以外の残り人数を$${n}$$として、そこから自分が勝つ確率を $${V_n}$$ とする。

$${V_0}$$ は、「自分の手番になったときに、自分以外の残り人数が$${0}$$人のときの、自分が最後の一人になる確率」、つまり、自分が生き残っていて他に誰もいないので、確率は$${1}$$。

$${V_1}$$ は、自分以外に$${1}$$人いるので、次の場合分け:

  • ①自分が残って、相手も残る $${1/4}$$

  • ②自分が残って、相手が消える $${1/4}$$

  • ③自分が消える $${1/2}$$

①の、自分も相手も残る場合は、何も起こらないことと同じなので、この確率は全体から取り除く。つまり、何か起こることだけを全体と見て遷移確率を作ればよい。

②は$${V_0}$$に遷移する。

③は自分が消えてしまうのでもう見なくてよい。

これらを合わせると、

$$
V_1 =\frac{1}{1-\frac{1}{4}} \frac{1}{4}V_0 =\frac{4}{3}  \frac{1}{4}V_0=\frac{1}{3}V_0
$$

$${V_2}$$も同様に(今度は相手は二人いるので)

  • ①自分も残って、相手も二人とも残る $${\frac{1}{8}}$$

  • ②自分が残って、相手が一人減る $${\frac{1}{2} \times \frac{1}{4} \times {}_2C_1 = \frac{1}{4} }$$

  • ③自分が残って、相手が二人減る $${\frac{1}{2} \times \frac{1}{4} = \frac{1}{8} }$$

  • ④自分が消える $${\frac{1}{2}}$$

よって

$$
V_2
=\frac{1}{1-\frac{1}{8}} \left( \frac{1}{4}V_1 + \frac{1}{8} V_0 \right)
=\frac{8}{7} \left( \frac{1}{4}V_1 + \frac{1}{8} V_0 \right)
=\frac{2}{7}V_1 + \frac{1}{7}V_0
$$

これを繋げていくと、$${V_n}$$ は

$$
V_n
= \frac{1}{1-\frac{1}{2^{n+1}}} \frac{1}{2} \sum_{i=0}^{n-1} \frac{1}{2^n} {}_nC_{i} V_i
= \frac{1}{2^{n+1}-1} \sum_{i=0}^{n-1} {}_nC_{i} V_i
$$

となって、$${V_0}$$から始めて$${V_{N-1}}$$までは$${\mathcal{O}(N^2)}$$ で計算できる。

さて、この $${V_n}$$ はあくまでも自分が先頭に来たときの、残り他人の人数別の自分が勝つ確率であった。$${1}$$番目の人にとっては、最初から自分が先頭なので $${V_{N-1}}$$ がそのまま自分が勝つ確率になるが、$${1}$$番目でない人においては、自分の前に何人脱落したかで生き残り人数が変わってくる。
そこで、自分が $${k}$$ 番目として、自分の前の$${k-1}$$ 人のうち$${l}$$ 人が生き残ったとすると、その状況になる確率は $${\frac{1}{2^{k-1}} {}_{k-1}C_l }$$、また、その状況では自分以外に $${N-k+l}$$ 人生き残っているので、そこから自分が勝つ確率は $${V_{N-k+l}}$$。

よってそれらを掛けてたしてあげれば、$${k}$$番目の人が勝つ確率になる。$${P_k}$$を$${k}$$番目の人が勝つ確率とすると、

$$
P_k = \frac{1}{2^{k-1}}\sum_{l=0}^{k-1}  {}_{k-1}C_l V_{N-k+l}
$$

これは $${V_n}$$ をあらかじめ計算しておけば $${\mathcal{O}(N^2)}$$ で計算できる。


この記事が気に入ったらサポートをしてみませんか?