この解説上では、NN が本来の N3\frac{N}{3} と等しいものとする。(例えば、本来 N=6N=6 のケースは N=2N=2 として扱う。)

まず、P1=1P_{1}=1 と固定し、求まった答えに 3N3N をかけるとする。

次の2つを満たすことが必要十分条件になる。

  • 隣り合った要素がどちらも NN 以下であることはない。
  • NN 以下の要素で PP を分割し、NN より大きい数のみからなる NN 個の数列にする。このとき、それらのどの数列に対しても次の条件が成り立つ。
    • 端以外の要素であって、隣のどちらの要素よりも小さいようなものが存在しない。(これを条件 CC とする。)

ここで、分割した後のそれぞれの数列の長さを前にあるものから順に A1,A2,ANA_{1},A_{2},\dots A_{N} とする。このとき、条件を満たす数列の個数は次のようになる。

  • (N1)!×2N!Ai!×(N-1)!\times \frac{2N!}{\prod A_{i}!}\times \prod{1,,Ai}\{1,\dots,A_{i}\} の順列であって、条件 CC が成り立つものの個数」

まず、「{1,,Ai}\{1,\dots,A_{i}\} の順列であって、条件 CC が成り立つものの個数」は、次のように求まる。

  • Ai=1A_{i}=1 ならば、明らかに 11 個。
  • Ai>1A_{i}>1 ならば、{1,,Ai1}\{1,\dots,A_{i}-1\} の順列であって条件 CC が成り立つものの端 22 つのどちらかに 11 を追加し、元々あった要素全てに 11 を足してできる全ての数列のみが条件を満たす。よって、2Ai12^{A_{i}-1} 個。

ここで、AA の総和は常に 2N2N である。よって、\prod{1,,Ai}\{1,\dots,A_{i}\} の順列であって、条件 CC が成り立つものの個数」は、常に 2N2^{N} と等しくなり、AA に依存しなくなる。

よって、本質的には次を求めればよい。

  • 長さが NN であり総和が 2N2N であるようなあらゆる正の整数列 AA に対する 2N!Ai!\frac{2N!}{\prod A_{i}!} の総和

ここで、AA を固定したとき、この値は次と一致する。

  • 11 以上 NN 以下の整数からなる長さ 2N2N の数列であって、 iiAiA_i 個あるものの個数

任意の AA に対する総和を取るため、求めるべき値は次と等しくなる。

  • 11 以上 NN 以下の整数からなる長さ 2N2N の数列であって、 11 以上 NN 以下の整数が全て出現するものの個数

これは、出現しない整数の個数を決め打つ包除原理によって、次のように個数が求まる。

  • k=0N(1)k(Nk)(Nk)2N\sum_{k=0}^{N} (-1)^{k} \binom{N}{k} (N-k)^{2N}

よって、最終的な答えは次の式によって求められる。これは時間計算量 O(NlogN)O(N\log N)O(NloglogN)O(N\log \log N) で計算することができるため、この問題を解くことができた。

  • 3N×(N1)!×2N×k=0N(1)k(Nk)(Nk)2N3N\times (N-1)!\times 2^{N}\times \sum_{k=0}^{N} (-1)^{k} \binom{N}{k} (N-k)^{2N}

(参考:twitter ありがとうございます)