2020年5月21日木曜日

ふか杯 5th contest E - すごろく

f(i):=f(i) := マスiiからゴールするまでにサイコロを振る回数の期待値、として降順にDPしたいが、振り出しに戻る場合の扱いを考えなくてはならない。

通常、ループを含む確率DPは左辺と右辺の両方にf(i)f(i)が登場する式が立式できて、f(i)=...f(i) = ...となるように整理すると遷移がわかるはずだが、この場合は紙の上で式変形するのは難しそうに見える。そこで、f(1)f(1)の係数も別にDPで求めることにする。つまり、f(i)=a(i)+b(i)f(1)f(i) = a(i) + b(i)f(1)と表して、a,ba, bを降順で求める。

xi>0x_i>0なら

a(i)=a(i+xi) a(i) = a(i + x_i) b(i)=b(i+xi) b(i) = b(i + x_i)

xi=0x_i = 0なら

a(i)=16(a(i+1)+...+a(i+6))+1 a(i) = \frac{1}{6}(a(i+1) + ... + a(i+6)) + 1 b(i)=16(b(i+1)+...+b(i+6)) b(i) = \frac{1}{6}(b(i+1) + ... + b(i+6))

xi=1x_i = -1なら

a(i)=0 a(i) = 0 b(i)=1 b(i) = 1

これでa(1),b(1)a(1), b(1)が得られるので、答えはf(1)=a(1)/(1b(1))f(1) = a(1)/(1-b(1))と求まる。