第二类斯特林数 + $NTT$ .
每个点的贡献可以单独考虑,答案是 $1$ 个点的贡献 $\times n$ ,而 $1$ 个点的贡献可以通过枚举其度数计算.
公式不知道为啥炸了,只好贴图片了.
只用算后面那个 $s=\sum_{i=0}^{n-1} {n-1\choose i}\cdot i^k$ .
为了方便,把这里的 $n$ 变成 $n-1$ ,即 $s=\sum_{i=0}^{n} {n\choose i}\cdot i^k$ .
套路地,考虑 $i^k$ 的组合意义,它表示将 $k$ 个不同的球放进 $i$ 个不同盒子中的方案数,盒子可以为空.
枚举有 $j$ 个盒子不为空.
而第二类斯特林数 $S(k,j) $ 表示将 $k$ 个球放入 $j$ 个相同的盒子中,盒子不能为空的方案数,于是得到
$$
i^k=\sum_{j=0}^{i-1}{i\choose j}\cdot S(k,j)\cdot j!
$$
代入 $s$ 的计算式,得到
$$
\begin{aligned}
s&=\sum_{i=0}^{n} \sum_{j=0}^{i-1} {i\choose j}\cdot j!\cdot S(k,j)\cdot {n\choose i} \\
&=\sum_{j=0}^{k} S(k,j)\cdot j!\cdot \sum_{i=0}^{n} {n\choose i}\cdot {i\choose j} \\
&=\sum_{j=0}^k S(k,j)\cdot j!\cdot {n\choose j} \cdot 2^{n-j}
\end{aligned}
$$
考虑利用容斥原理计算一行的斯特林数,
$$
S(n,m)=\frac{1}{m!}\sum_{i=0}^m (-1)^i {m\choose i}(m-i)^n \\
=\sum_{i=0}^m \frac{(-1)^i}{i!} \cdot \frac{(m-i)^n}{(m-i)!}
$$
用 $NTT$ 求出所有的 $S(k,j)$ ,直接带进去计算即可,时间复杂度 $O(k\log k)$ .
1 | //%std |