多项式求逆.
首先这个随机过程可以等价于随机出了一个 $1\sim n$ 的排列,需要对每个排列的答案求和.
不难发现,各个连通块是一段连续的区间,且两个相邻的连通块之间一定是左侧的最小值大于右侧的最大值.
设 $F(x)$ 表示长度为 $i$ 的排列形成一个连通块的 OGF, 若干个这样的结构会组合成一个排列,且合并时顺序固定.
那么设 $P(x)=\sum i!x^i$ ,则有 $\frac{1}{1-F}=P$ ,得出 $F=1-\frac{1}{P}$ .
考虑如何计算答案,只需要把贡献放入 $F$ 的每一项中,再用若干个结构卷起来组合成排列即可.
设 $G=\sum [x^i]F\cdot i\cdot x^i$ ,则 $[x^n]\frac{1}{1-G}$ 即为所求.
需要实现多项式乘法及求逆,时间复杂度 $O(n\log n)$ .
1 | //%std |