E - ab文字列 Editorial by kozima
\(F_{n,k}\) の長さを各 \(n\) について計算してみると、\(|S| \le 20000\) という制約から \(n \le 22\) でなければならないことがわかります。よって答えの候補は \(n \le 22, k < 2^{n-2}\) の範囲であり、約 \(2^{21}\) 通りしかありません。そこで全探索を考えます。\(F_{n,k}\) そのものを列挙すると間に合わないので、ローリングハッシュ \(H(F_{n,k})\) を列挙します。
ローリングハッシュは文字列 \(s, t\) に対して \(H(s + t) = b^{|t|}H(s)H(t) \bmod h\) を満たすことを使えば効率的に計算できます。
posted:
last update: