AtCoder Regular Contest 145 A問題 AB Palindrome
問題
提出解答
問題の概要
からなる長さ
の文字列
が与えられる.
以下の操作を 回以上行うことにより,
を回文にすることは可能か?
の隣接する2つの文字を
に置き換える.
制約
は
からなる長さ
の文字列.
解法
文字列 と
に対して,
で
の
文字目を表すことにする.
のときは操作をしてしまうと
になってしまい, 回分にならない. 従って, 最初の状態で回分かどうかを判定すれば良い. つまり,
か
であるかどうかを判定すれば良い.
とする. このとき, 可能であるための必要十分条件は
である. これを証明する. ここで,
文字目と
文字目を
に置き換える操作を操作
と呼ぶことにする.
のとき: 以下のように上から操作すると,
にすることができる.
- 操作
操作
操作
- 操作
操作
操作
- 操作
- 操作
のとき: 以下のように上から操作すると,
にすることができる.
- 操作
操作
操作
- 操作
操作
操作
- 操作
- 操作
のとき: 操作
を施すと,
の場合に帰着できる.
のとき: どのような操作を施したとしても,
の状況は変わらず, これは明らかに回分ではない.
このことから, の最初と最後の文字を見れば良い. 計算量については
の読みこみがボトルネックとなり,
となる.