mini notes

競技プログラミングの解法メモを残していきます。

ABC189 F - Sugoroku2

問題:F - Sugoroku2

解答:Submission #19664058 - AtCoder Beginner Contest 189

解法:M個以上の連続した「スタートに戻る」マスがあればゴールに到達不可能であり、その場合は-1を出力する。それ以外はゴールに到達可能となる。

期待値の独立性より、ある状態xの期待値dp[x]は、その一つ先の状態yiとその状態への遷移確率piを用いて下記のように表現される(多分)。

dp[x] = Σ (dp[yi]+1) * pi

仮に「スタートに戻る」というマスがない場合は、上記のdp遷移式により、dp配列を添字の大きい方(後ろの方)から埋めてゆくとよい。

「スタートに戻る」とはdp[0]の状態になることであるので、「スタートに戻る」マスはyi = 0と置くことにより立式は可能である。dp配列を添字の大きい方から求めてゆくと、dp[0]の立式では左辺と右辺にdp[0]が登場することになる。dp[0]の係数は1でなく(※)、dp[0]の一次方程式として解答を算出できる。 ※要証明だが、おそらく「M以上の連続する「スタートに戻る」マスがない」がまさに必要十分条件と思われる。

また、x > 0なるdp[x]の立式ではdp[0]の値を適当に仮置きし、最終的にdp[0]の計算結果と仮置き値の誤差を図り、その誤差を0にするように三分探索してもよい(誤差が非負となる最小の仮置き値を求める)。提出解答では誤差を差の絶対値としたため、三分探索で求めている。