atcoder#ABC189F. [ABC189F] Sugoroku2

[ABC189F] Sugoroku2

配点 : 600600

問題文

高橋君は双六で遊んでいます。

この双六には 00 から NN の番号がついた N+1N+1 個のマスがあります。 高橋君はマス 00 からスタートし、マス NN を目指します。

この双六では、11 から MM までの MM 種類の目が等確率で出るルーレットを使います。 各手番で、高橋君はルーレットを回して出た目の数だけ進みます。この結果マス NN に到達するか、マス NN を越えて進むことになる場合、ゴールとなります。

また、いくつかのマスは「振り出しに戻る」であり、それらのマスに止まると、マス 00 まで戻されます。 そのようなマスは KK 個あり、マス A1,,AKA_1,\ldots,A_K です。

高橋君がゴールするまでにルーレットを回す回数の期待値を答えてください。 ゴールすることが不可能な場合は、かわりに -1 を出力してください。

制約

  • 入力はすべて整数
  • 1N1051 \leq N \leq 10^5
  • 1M1051 \leq M \leq 10^5
  • 0K100 \leq K \leq 10
  • 0<A1<<AK<N0 < A_1 < \ldots < A_K < N

入力

入力は以下の形式で標準入力から与えられる。

NN MM KK

A1A_1 \ldots AKA_K

出力

高橋君がゴールするまでにルーレットを回す回数の期待値を出力せよ。 なお、想定解答との絶対誤差または相対誤差が 10310^{-3} 以下であれば正解として扱われる。 ただし、ゴールすることが不可能な場合は、かわりに -1 と出力せよ。

2 2 0
1.5000

11 回目のルーレットで 11 を出した場合は 22 回、22 を出した場合は 11 回でゴールできるので、ルーレットを回す回数の期待値は 1.51.5 です。

2 2 1
1
2.0000

ルーレットで 11 を出すとマス 11 に移動しますが、このマスは「振り出しに戻る」なのでマス 00 に戻されます。 従って、22 が出るまでルーレットを回し続け、22 が初めて出た時点でゴールすることになります。 ii 回目に初めて 22 が出る確率は 12i\frac{1}{2^i} ですから、ルーレットを回す回数の期待値は i=1(i×12i)=2\sum_{i = 1}^{\infty} (i \times \frac{1}{2^i}) = 2 となります。

100 6 10
11 12 13 14 15 16 17 18 19 20
-1
100000 2 2
2997 92458
201932.2222