Official
K - マス目/Grid Editorial by admin
まず、\(k=1\) についてはスタートからBFS(幅優先探索)を行うことで \(O(N^2)\) で解くことが出来ます。
一般の \(k\) について考えます。
スタートがマス \((i_s,j_s)\) だとすると、\(i\equiv i_s \pmod k\) かつ \(j\equiv j_s \pmod k\) であるようなマス \((i,j)\) にしか辿り着くことは出来ません。それらのマスのみに注目してBFSを行えば \(O((\frac{N}{k})^2)\) で解くことが出来ます。
ただしそのためには「マス \((i,j)\) から上/下/左/右に \(k\) マス進むことができるか」を \(O(1)\) で求める必要があります。これは二次元累積和等を用いれば可能です。(事前に \(O(N^2)\) の計算量がかかります。)
全体の計算量は \(O(\sum_{k=1}^{N-1}\frac{N^2}{k^2})\) となります。これは、\(\sum_{k=1}^{\infty}\frac{1}{k^2}\) が \(\frac{\pi^2}{6}\) に収束するため \(O(N^2)\) であることが分かります。
posted:
last update: