ウホウホゴリラッホ

主に勉強したことをまとめていきます。twitter:@pytran3

エクサウィザーズ 2019 E - Black or White

問題

atcoder.jp

考察

よくわからない有理数がなんとかは後ろの方で説明。
ある状態でチョコを食べる時、チョコが十分にある場合は\frac 1 2であるが、片方のチョコがなくなってしまう場合には0 or 1となっているためチョコがなくなっているケースを考慮する必要がある。
i番目に黒のチョコを食べる確率は以下のようになる。ただし黒のチョコが存在しない確率と白のチョコが存在しない確率をそれぞれP_i,Q_iとおいた。

(1-P_i-Q_i) \times \frac 1 2 + P_i \times 0 + Q_i \times 1

整理すると

 \frac 1 2 (1 - P_i + Q_i)

となる。この式からP_i,Q_iを求めることで解が得られることになる。上の式はだいたい\frac 1 2だけど食べきってしまう分の補正項が括弧の分だけありますよ、というのが表現されている。

P_i,Q_iの求め方

P_iの求め方とQ_iの求め方は同様なので、以下はP_iの求め方を記述する。

i \lt Bの場合

明らかにP_i=0である。(食べきることはないので)

i=Bの場合

[0, B)の間にすべて黒を選んだ場合にのみ黒がなくなってしまうので、P_i = {2}^iである。

i \gt Bの場合

本題である。黒がB個、白がB-i個の順列を考えると以下のような式が成立しそうな気がするが、これは過剰に低く見積もってしまっている。

P_i = {}_i C _{B-i} \times 2^i

これは例えば初めに前半にすべての黒のチョコを食べて後半に白のチョコを食べるというケースを考えることでわかる。このケースの生起確率は {2}^iではなく{2}^Bである。なぜなら黒のチョコを連続でB個食べる確率は{2}^Bであるが、その後白のチョコを食べ続ける確率は1であるためである。このケースから上のcombinationを用いた式は成り立っていなさそうなことがわかる。
ここでdpを考える。i番目にB個のチョコが食べられている確率は、i-1番目にB個のチョコが食べられている確率とB-1個のチョコが食べられている確率をがわかると得られそうである。結果以下のdpが得られた。Pに添字を一つ追加して現在食べた黒のチョコの数を識別した。

p_{i+1,B}  = P_{i,B} + \frac{1}{2} P_{i,B-1}

2項目の\frac 1 2は黒を食べる場合と白を食べる場合と2通りあるためである。P_{i,B}はメモ化して順次求めていく。(i=Bは上の方で求めてある)P_{i,B-1} の方はどちらかを食べきってしまうことはないので、普通にcombinationが使えるため以下の式が成り立ちP_{i+1,B}が得られた。

P_{i, B-1} = {}_i C _{(B-1)-i} \times 2^i

Q_iについても同様である。
以上よりi回目に黒のチョコを食べる確率が求められた。

有理数を分数で表した場合のなんとかかんとか

こどふぉではよくある表現らしい。

 xz \equiv y \pmod{{10}^9 + 7}

要は普通に掛け算や割り算をmod取りながらやれば良い。出力例1をよく見ると2の逆元とそれの \frac 3 2倍の値が並んでいることがわかる。
z \gt 1の領域は1以下の分数になっている。1以上の値と同時に取り扱う場合には大変なことになりそう。

解答

記事中とPとQが反対なので参照する場合は注意。
atcoder.jp