問題一覧 > 通常問題

No.2222 Respawn

レベル : / 実行時間制限 : 1ケース 2.000秒 / メモリ制限 : 512 MB / 小数誤差許容問題 絶対誤差または相対誤差が10510^{-5} 以下。ただし、ジャッジ側の都合で500桁未満にしてください
タグ : / 解いたユーザー数 29
作問者 : stoq / テスター : ぷら Shirotsume
7 ProblemId : 7759 / 出題時の順位表 / 自分の提出
問題文最終更新日: 2023-02-14 16:32:34

問題文

NN 個のマスが一列に並んでいます。左から ii 番目のマスをマス ii と呼びます。

いくつかのマスには罠が仕掛けられており、マスの状態は長さ NN の文字列 SS で表されます。 SiS_i はマス ii に対応し、'.' は罠がないことを、'#' は罠があることを表します。

stop くんは現在マス 11 に立っていて、マス NN に行きたいです。
さらに stop くんは変数 xx (初期値は 11)を持っており、xx に現在の居場所を「セーブ」することができます。

stop くんはマス NN にちょうど止まるまで、次の3種類の操作のいずれかを無作為に選び行うことを繰り返します。 ここで3種類の操作は等確率で、かつ毎回独立に選ばれるものとします。

  • 右方向に1マス進む。マス NN を超えた場合や '#' のマスにちょうど止まった場合はゲームオーバーとなり、マス xx に飛ばされる。
  • 右方向に2マス進む。マス NN を超えた場合や '#' のマスにちょうど止まった場合はゲームオーバーとなり、マス xx に飛ばされる。
  • セーブする。現在マス ii にいるとして、xix \leftarrow i と更新する。

このとき、操作を行う回数(3種類の合計)の期待値を求めてください。

本問題の制約下において、期待値は必ず定義されます。また、この制約下で解は 10910^9 を超えないことが証明できます。

入力

NN
SS

  • NN は整数
  • 2N2×1052 \leq N \leq 2 \times 10^5
  • SS は '.' と '#' のみから成る長さ NN の文字列
  • S1S_1SNS_N は '.'
  • SS において '#' は2文字以上連続しない

出力

操作を行う回数(3種類の合計)の期待値を出力してください。

想定解答との絶対誤差または相対誤差が 10510^{-5} 以下であれば正解とみなされます。

サンプル

サンプル1
入力
2
..
出力
3

このケースでは、1マス進むという操作が選ばれたら終了です。

期待値は k=1k(23)k113=3\displaystyle \sum_{k=1}^{\infty} k \left( \frac{2}{3} \right)^{k-1} \frac{1}{3} = 3 です。

サンプル2
入力
4
..#.
出力
7.5

例えばマス 22 でセーブしていた場合、マス 33 に止まったりマス 44 を超えたりした場合でも飛ばされるのはマス 22 になります。

期待値は 152=7.5\displaystyle \frac{15}{2} = 7.5 です。

サンプル3
入力
10
.#...#..#.
出力
23.130836237

提出するには、Twitter 、GitHub、 Googleもしくは右上の雲マークをクリックしてアカウントを作成してください。