解法
が回文になる条件は、
a ~ zについて、に含まれる個数が全て偶数になる、もしくはどれか1つのみが奇数になる、のどちらかです。
a,
b, ...,
zとします。
先頭の文字から番目の文字までを見て、奇数個になる文字
について、
を計算したものを
とします。
が回文になる条件は、
と
の排他的論理和を取った際に立つ2進数のbitが1個以下になる、というものに言い換えられます。
文字目までで、分割できる回文の個数の最小値
を考えると、
という遷移が成り立ちます。
ここで、は
を2進表記した際に立つビットの個数とします。
これだけみるとになりますが、それぞれの2進表記で一番小さい値となるものをメモしておけば、27通りについて確認するだけで問題ありません(2進表記は、
が累積xorを取っているだけなので最大
通りです)。
あとはこれを計算し、を求めればおしまいです。
感想
とても面白かったです。