2020年1月9日木曜日

いろはちゃんコンテスト Day 2 J - ヌクレオチド

NNが偶数の場合を考える。左右のN/2N/2文字をそれぞれL,RL, RとするとRRLLの反転になる。つまり、LLの中で転倒Ai>Aj,i<jA_i > A_j, i < jが起こっているとき、RRの対応する位置ではAi<AjA_{i'} < A_{j'}となる。L,RL,Rをあわせると、Ai=AjA_i = A_jであるi,ji, j以外は1回ずつ転倒を数えていいことになる。つまり、LL00zz個含まれるとすると、Ai=Aj=0A_i = A_j = 0なる組が(z2)\binom{z}{2}個、Ai=Aj=1A_i = A_j = 1なる組が(N/2z2)\binom{N/2-z}{2}個含まれるので、LLの並べ方全体からこれらを引けば(LL内とRR内の)転倒の総数が(N/2z)(z2)(N/2z2)\binom{N/2}{z}-\binom{z}{2}-\binom{N/2-z}{2}と数えられる。あとはLL内の11RR内の00による転倒を足して

(N/2z)(z2)(N/2z2)+(n/2z)z=K \binom{N/2}{z}-\binom{z}{2}-\binom{N/2-z}{2} + (n/2-z)z = K

LL00zz個含まれるときにはこの等式が成立していなければならないことになる。式を整理すると2z2Nz+K=02z^2 -Nz + K = 0となって、この二次方程式の整数解は高々2つなので、2つの解について数列の総数を求めればよい: (N/2z1)+(N/2z2)\binom{N/2}{z_1} + \binom{N/2}{z_2}

NNが奇数の場合についても、例えば中央が00と決めて同様の議論をすればよい。(対称性により、中央が11の場合も同数の列がある。)