AtCoder Beginner Contest 286 C問題 Rotate and Palindrome
問題
提出解答
問題の概要
長さ の英小文字列 が与えられる.
次の操作を好きな順に合計 回以上行うことができる.
- 円払う. その後, の左端の文字を右端に移動させる.
- 円払う. その後, にある 文字を好きな英小文字に置き換える.
制約
- は長さ の英小文字
解法
長さ の英小文字列を定義域とする写像 を次のように定義する.
- で の左端の文字を右端に移動させた文字列とする.
- で の 文字目を に置き換えた文字列とする.
このとき, に対して, 以下が成り立つ. なお, で恒等写像とする.
- .
- . ただし, とする.
よって, 任意の操作たちは 以上 以下の整数 と と英小文字 を用いて,
とすることができる.
以降では それぞれに対して, を 回作用させた後, 置き換えのみを行った場合を考える.
このとき, 置き換えの回数を最初にするためには次のようにするしかない.
- に対して, の左から 文字目と右から 文字目が異なるならば, 一方を他方に置き換える.
これによる操作回数の最小値を とするとき, 以下が答えになる.
計算量は 時間である.