D - Poor Sense of Direction

2 secs 1024 MB
loop0919's icon loop0919

解説

dp[i][j]\mathrm{dp}[i][j] を、 ii 分時点で街 jj にいる確率と定義した動的計画法で解くことが出来ます。

遷移時に kk の逆元 (1kN)(1 \leq k \leq N) を求める必要がありますが、 低速な言語だと毎回計算していると間に合わないため、前計算をしておく必要があります。

前計算を行った場合、動的計画法の状態数が O(NT)O(NT)、遷移回数の合計は O(MT)O(MT) ですので、計算量は O((N+M)T+Nlogmod)O((N+M)T + N\log \mathrm{mod})O((N+M)T)O((N+M)T) で求めることができます。
(ここで mod=998244353\mathrm{mod} = 998244353 とします。)

想定解

pypy3