Loading

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)\) 的。

posted @ 2021-07-14 07:27  zhoukangyang  阅读(577)  评论(0编辑  收藏  举报