解法
ダブっている数字は数列に1つ必ず存在します。
ダブってる数字のうち左側にあるものを,右側にあるものを
としたとき、数列は次のようになっています。
ここで、はそれぞれ0個以上の要素を持っている数列です。
長さの部分列を数え上げる方針としては、まず
という
を除いたパターンを数え、その後
が存在した場合に新しく作成できるパターンを計算して合算します。
を無視した場合
という数列には、~
の数字がすべて1つずつ含まれています。ので、全ての数字について、使うか使わないかの2通りを考えればよく、これは
となります。を考慮した場合
新しく増えるパターンは、必ずを使用します。なぜなら、使用しないパターンはすでに前の段階で数えているからです。
ここは、さらに2つに場合分けします。を部分列に含むか含まないか、です。
を含む場合
を使用することが確定しているので、残った
の部分から
個を選びます。ということで
となります。を含まない場合
と
が同じ数字であるので、被りがないように数え上げなければなりません。
ここで、どのように部分列を選んだらまだ数えられてない部分列(ここで数えるべき部分列)になるかというと、
の中から少なくとも1つの要素を選んだ場合
です。
の要素は、
を使用した場合でも
を使用した場合でも、その数字より左側に、
はどちらの場合でも右側に存在します。
ですが、にある要素は、
を使用した場合は
の右側に、
を使用した場合では
の左側に並ぶことになりますので、かならずまだ数えられてない、新しい部分列を作成できます。
の中から少なくとも1つの要素を選ぶことについて考えると、
全て使うパターン、
を使うパターン、
を使うパターン、
のみ使うパターンの4通りです。
これをそれぞれ求めるのは難しいので、の中から自由に選ぶパターンから、余分なパターンを引く、包除原理の考え方を使うことにします。
の中から自由に選ぶパターンの計算式をたてます。すでに決まっているのは
のみなので、
から残りの
個を選択します。
の個数をその文字で表現したとき、
となります。
そして、余分なパターンは、を使用しないパターンです。これは言い換えると、
のみから選んだパターン、となります。
から自由に選ぶパターンは、簡単に計算することができ、
です。あとは、上の式から下の式を引くだけでよく、
となります。
ということで、最終的な式は次のようになります。
あとは、それぞれのについてこれを求めれば、答えとなります。