CODE FESTIVAL 2017 qual C D: Yet Another Palindrome Partitioning
Livedoorブログからの移動
はてなブログからの移動
code-festival-2017-qualc.contest.atcoder.jp
解き方
O(n)
の前計算で、s[i:j]
が入れ替えて回文になるかどうかを計算できるようにするs[0:i]
の最小の分割数でDPを構成する(O(n^2)
)- hash値に対するDPとすることで
O(n)
に高速化
ハマったところ
- 前計算→DPの流れまではわかった
- 前計算について、おそらく累積和のような方法で
O(n)
にするのだろうという予測はついたが、思いつかなかった- 64個以内の要素が01を取る時はhashとbit演算の組み合わせを考えるのは有効?
- hash値に対するDPが思いつかなかった
- 今の自分では思いつく気がしない