这是一篇民科的直接从生成函数角度进行推导的题解。
首先,根据 Prufer 序列,易知相当于计数长度为 n−2 的,元素在 [1,n] 内且所有元素出现次数的最大值恰为 m−1 的序列个数。
但是最大值恰为 m−1 并不好求,考虑差分转化为出现次数全都不超过 m−1 的,减去出现次数全都不超过 m−2 的。
于是考虑如何计数长度为 n−2,元素出现次数不超过 m−1 的序列个数。
序列当然是用 EGF,因为要考虑顺序。由于每种元素的出现次数都不能超过 m−1,所以可以考虑对每种元素构造 EGF。
则设 F(x)=m−1∑i=0xii!
因为同元素之间换顺序也只算一种方案。
由于有 [1,n] 的元素,所以答案就是 (n−2)![xn−2]Fn(x) 多项式倍增快速幂或者 ln exp 快速幂解决。
复杂度 O(nlog2n) 或 O(nlogn)。
代码:
1 |
|