Description
有m天时间,每天可以完成任意数量的事件,第i天可以完成的事件有(ui+v)种(可以同一种完成多次)
问m天总共完成n个事件的方案数。
注意每天完成的时间是有顺序的,也就是说同一天内1,2和2,1是两种不同的方案。
T组数据。
,答案对998244353取模
Solution
容易列出每一天的一般生成函数为
那么答案就是中这一项的系数
暴力乘或者分治NTT再求逆显然不能通过。
然后我们发现分母是一个常数项为1的多项式
这不禁让我们联想起常系数齐次线性递推
但是m=200000,还有5组数据,实测极限跑一分钟都跑不出来…
然而此时我们发现并没有利用(ui+v)这个性质
这里就有一些技巧了
题解给出了一个组合意义的推导方法,这里我们介绍另外一种。
我们先给出一个结论
最终的多项式
其中是与m,i有关的常数
这是怎么得来的呢?
我们考虑这样一个小学奥数的式子
也就是说我们能将乘化成加减
现在的问题是求出系数,以及搞清楚前面的是怎么来的
我们假定已经求出了
我们要在末尾乘上
考虑它与第j项相乘
我们发现,分母中的x同时将会出现在后面括号的两项中,因此每加入一个新的i+1,总的式子就会除以x,这就是的来由,u也是一样的,因此我们可以提出一个
观察a的变化,我们发现每加入一个(i+1)它就会类似的这样变动
也就是说
那么
现在的问题是计算,记为
1~i-1的每一项都会对fi有贡献
容易看出
设为的生成函数,我们可以得到(因为第一项不能被转移来)
解得,即
现在有了,就能相应的计算出,就能求得每一个和式的系数,进而直接利用生成函数的第项为的性质就能算出答案。
注意由于前面乘了一个,因此计算的是这一项。
时间复杂度,是快速幂
Code