解けなかった問題を覚書程度に記す。
atcoder.jp
ABC150F
難しくない??(ずっと言ってる)
結局XOR演算について正しく理解しているかという話になる。基本的な性質はググれば出てくるが,
くらいだろうか。証明は真理値表より。
とが全て一致すれば言いわけだが,もしこれがとあるkについて成立していれば,すべてのiに対して,が成立している。これは先ほど述べた性質よりと一致しているため,このようなkをKMP法を用いて探せばいい。逆を考えることでを特定できる。
KMP法についてはググったら出てくる。が,結構理解する&実装するのに時間がかかった。でももうライブラリも整備したし,次は大丈夫。なはず。
このままだとeditorialそのままなので何か書く。例えば,,であり,XORがただの足し算であるような状況を考える。
このとき,条件を満たすようなを探すのにかける人はいない。Aはただシフトして同じものを足しているだけなので,例えばそれらの差分は変わらない。差分を用いてBと効率的に比較できる。
ところでこの状況は一般的である。つまり,2を0と置き換え,をbitごとに別の数列として改めておくと,問題の状況と完全に一致する。