公式

F - Minflip Summation 解説 by tatyam 印刷ページ


小問題の答えは、\(T'\) の \(1\) 文字目が 0 のとき、\(T'\) を前から順に見たときに 0 から 1 に変わった回数、\(T'\) の \(1\) 文字目が 1 のとき、1 から 0 に変わった回数です。
そこで、

  • \(1\) 文字目が 0 で現在の文字が 0
  • \(1\) 文字目が 0 で現在の文字が 1
  • \(1\) 文字目が 1 で現在の文字が 1
  • \(1\) 文字目が 1 で現在の文字が 0
  • 現在見ている文字までの小問題の答え

の \(5\) つの状態を持った行列累乗でこの問題を解くことができます。
? は 0 と 1 の重ね合わせと見ることができるので、? に対応する行列は、0 に対応する行列と 1 に対応した行列を足し合わせたものになります。
\(T\) の \(2\) 文字目以降について行列を計算し、これに \(T\) の \(1\) 文字目を入れると答えが求まります。
時間計算量は \(O(|S| + \log K)\) です。

回答例 (C++)

投稿日時:
最終更新: