LOJ #3397. 「2020-2021 集训队作业」春天,在积雪下结一成形,抽枝发芽
设 \(n\) 个点这样的排列个数为 \(f_n\),设 \(n\) 个点的合点个数为 \(a_n\),设 \(n\) 个点的析点个数为 \(b_n\),\(C_n=n!\)。
考虑如何求出 \(A\):仅考虑儿子序列是上升的情况。条件转化为存在一个前缀满足是 \([1,k] (1 < k < n)\) 的排列。考虑计算不满足的情况,设为 \(I\)。
\[I = C - CI
\]
\[I = \frac{C}{1+C}
\]
所以 \(A = \frac{2C^2}{1+C}\),\(B = \frac{C-C^2}{1+C}\)。
\[F(C)=\frac{C-C^2}{1+C}-x
\]
令 \(F = \frac{x-x^2}{1+x} - F\)。
发现 \(F(C)=x\)。于是 \(F\) 和 \(C\) 互为复合逆,因此 \(C(F)=x\)。
\[C = x + xC + x^2C'
\]
\[x = F + Fx + F^2C'(F)
\]
\[x = F + Fx + \frac{F^2}{F'}
\]
\[x F' = F F' + F F'x + F^2
\]
\[nf_{n} = \sum\limits_{i=1}^{n-1} (i+1) f_{i} f_{n-i} + \sum\limits_{i=1}^{n} i f_{i} f_{n-i+1}
\]
\[f_{n} = - \sum\limits_{i=1}^{n-1} (i+1) f_{i} f_{n-i} - \sum\limits_{i=2}^{n-1} i f_{i} f_{n-i+1}
\]
分治 FFT 即可。时间复杂度 \(\Theta(n \log^2 n)\) 或 \(\Theta(\frac{n \log^2 n}{\log \log n})\)。
由于我懒,就写了 \(\Theta(n^2)\) 的。