ABC130 E - Common Subsequence
解法
LCSや編集距離に近いものを感じたので、似たような遷移のDPを考えていきます。
- までを見終えた段階でできる、問題の条件を満たす整数列の個数
とします。
初期値としては、です。いずれのパターンでも、共に1つも選ばない1通りの整数列のみです。
求めたい答えは、に格納されています。
ということで遷移を考えていきます。
まずは、の値を考えるとき、まずはのペアを部分列に使わないパターンを考えます。すると、
までを見終えた段階でできる部分列の個数と、までを見終えた段階でできる部分列の個数を足せば基本的に網羅できそうな気がします。
が、この遷移をよく見てみると、どちらにもが足されているため、この部分を重複して数え上げてしまうことになります。
この重複を消す必要があるので、
となります。
あとは、のペアを使って部分列を構成するパターンで、このパターンは、ちょうど通りだけ存在します。
ということで、
となります。
あとはこの遷移を行うことで、答えを求めることができます。
感想
似たDPの種類を見つけるところまではよかったのですが、正しい遷移を丁寧に求めるのに失敗してタイムロスをしました。
とはいえある程度十分な速度で解けているような気がします、DPが綺麗に解けると嬉しいですね。