题目要求的东西太别扭了(你猜为什么我 wa 了一发),这里改一下变量名的顺序:
给定 n,k,对 i=0…k,求 {in} 的值。
第二类斯特林数的生成函数形式是:
F(n)=i∑{in}xi
考虑推一下式子:
F(n)=i∑{in}xi=i∑(n{i−1n}+{i−1n−1})xi=ni∑{i−1n}xi+i∑{i−1n−1}xi=ni∑{in}xi+1+i∑{in−1}xi+1=x(nF(n)+F(n−1))
即 F(n)=xnF(n)+xF(n−1),移项可得 (1−xn)F(n)=xF(n−1) 即 F(n)=1−xnxF(n−1)。
这是一个递推式的形式,考虑直接求出其通项。显然有 F(n)=i=1∏n(1−ix)xn=xn×(i=1∏n(1−ix))−1。
前面的 xn 就是多项式整体平移 n 位,可以先不考虑,因此只剩下后半部分的 (i=1∏n(1−ix))−1 要求。而这个东西的内层显然可以分治卷积做到 O(nlog2n) 求解,外层就套一个多项式求逆即可。总时间复杂度为 O(nlog2n),可以通过。
喜欢的话,留下你的评论吧~