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