AtCoder Regular Contest 077 F. SS
本質的な補題を証明してから解いたら3時間ぐらいかかった。 解説見たらその部分「周期の最小性より」で省略されてたけど、そんな単純に成り立つものだと僕は思えてないんだよね、そんな簡単に証明できる??? ということで補題と証明を以下に書きます。
証明
は明らかに
のborderであるから、これ以上長いborderがないことを示せば良い。
とおけば、正整数
を用いて、
である。
以下、3ケースに場合分けする。
a) 
として、↑がborderであると仮定する。
に注意すれば、これは
と同値である。
この等式の両辺の最後の文字に注目すると
から は周期。
他方、両辺の
文字目から
文字目までに注目すると
より、は周期。
の最小周期を
とおいておく。当然、
が成立する。
であることに気をつけると、そのような
が存在するには、
が必要。
今、明らかに
であるから、周期性補題から
も周期になる。
これをとおく。
も
以下であるから、
に対して同様に周期性補題を用いれば、
は
の倍数である事がわかる。
したがって、
も全て
の倍数。これは、
の周期として
が取れることを意味するから
の最小性に反する。
以上からこのようなborderが取れることはない。
b)
未満の周期のうち、比較的短いもの
が
未満の周期
があると仮定する。すなわち、borderとして
という形になっているものを考える。
この時、も同様に周期
を持つことに気をつける。
このと
に対して
に関する周期性補題を適用出来る場合を考える。これがケースb)である。
すなわち
が成立する時を考える。
この時、が成立するから
は
の倍数。
したがってに対応するborderは
のような形をしている。
borderの最後の文字について注目すると、suffix側のborderは明らかに
である。
他方、prefix側は(
の後に続いているわけなので)
である。
これは
の双方が
の周期であることを表す。よって、ケースa)の議論と同様にして矛盾する。
c)
未満の周期のうち、長いもの
ケースb)では周期性補題が利用できるほど周期が比較的短い場合には矛盾するということが言えた。 残りは周期性補題の不等式が成立しない場合である。すなわち、
であるケースを考える。
は少なくとも、
より以上の長さを持つ。
すなわち、
に対応する
のborderは高々
程度の長さしか持たない。
よって、borderは
のような形で表せる()。
の時、すなわち
のように表せる場合は、borderの先頭
文字および末尾
文字に注目すると、
が
の周期となりa), b)と同様に矛盾する。
の時、prefix側のborderは
のprefixである。
したがって、このborderの末尾p文字に注目すると、
が
の周期であることが分かる。
よって、これも同様に矛盾する。
以上で全てのケースを尽くせているから、 の最長borderが
であることが示された。
割と、こうやって場合分けをしないと、borderや周期を考えるまではいいけど、
どのタイミングでにぶつかるかが不透明すぎて頭が爆発すると思っている。
ただ議論自体は全部同じように進むので、もしかしたら慎重に注目する場所と長さを選べば全部ひとまとめで考えられるのかなあ、いやそんなことない気がする
周期性補題って本質的には「周期が十分短いなら最小周期の倍数」って定理なわけだけど、長い周期に関しては何も言えないし、今回は最小周期がとても長いということをいいたいわけなので、それより少しだけ短い周期に関してはこうやって慎重に考えるしかないと思う