题意: 初始时 a=[0,1]a = [0,1]a=[0,1],每次更新将 aaa 逆序对的数量 kkk 插入其中,求最终长度为 nnn 的序列的数量。
以下均设当前的序列逆序对的数量为 kkk。
首先需要通过观察得出一个性质,当序列第一次出现 k>1k > 1k>1 的时候,若将 kkk 插在中间的位置,会使得 k′>kk' > kk′>k,在末尾插入则 k′=kk' = kk′=k。设 fif_ifi 表示长度为 iii 且当前第一次出现 k>1k > 1k>1 时,变为长度为 nnn 的序列的数量。剩下还有 n−in - in−i 次操作,可以将 kkk 均插入末尾,或者在末尾插入若干个以后再将 kkk 插入中间的 iii 个位置之一,因此可以得到以下转移:
fi=i×∑j=0n−i−1fi+j+1+1 f_i = i \times \sum \limits_{j = 0}^{n - i - 1} f_{i + j + 1} + 1 fi=i×j=0∑n−i−1f