Can you stop exactly? 2

2 secs 1024 MB
YSatUT's icon YSatUT

求める確率をpnp_nとします。n<mn<mの時は前問と同じ解法で求めます。 以下ではnmn\geq mの場合の解法について解説します。

vi=(pipi+1pi+m1),P=(010000100000011/m1/m1/m){\bm v}_i=\left(\begin{array}{c}p_i\\p_{i+1}\\ \vdots \\p_{i+m-1}\end{array}\right), {\bm P}=\left(\begin{array}{cccccc}0&1&0&\cdots&\cdots&0\\0&0&1&0&\cdots&0\\0&0&0&\ddots&\cdots&\vdots\\\vdots&\vdots&\vdots&\vdots&\ddots&\vdots\\0&\cdots&\cdots&\cdots&\cdots&1\\1/m&1/m&\cdots&\cdots&\cdots&1/m\end{array}\right) (ただし、P{\bm P}mm次正方行列とします)とおくと、vi+1=Pvi{\bm v}_{i+1}={\bm P}{\bm v}_iが成立します。よって、pnp_nPnv0{\bm P}^n{\bm v}_0の第0成分に等しいです(ただし、p0=1p_0=1とします)。

v0{\bm v}_0を求めるにはp0,p1,pm1p_0,p_1,\cdots p_{m-1}をすべて求める必要があるので、この部分の計算量は前問の解説よりO(m)O(m)となります。また、行列乗算の計算量はO(m3logn)O(m^3\log n)となります。 よって、全体の計算量はO(m3logn)O(m^3\log n)となるので、十分時間内に間に合います。

質問・誤りがある場合

Twitterに連絡ください。ID : @YS55749378