设 fn=n∑i=02i⋅i!{ni}。
考虑其组合意义,即 fn 表示 n 个不同的物品放进最多 n 个不同的盒子中,可以有空盒,且每个盒子有黑红两种颜色的方案数。
于是考虑枚举其中一个盒子中物品的个数,易得递推式 fn=2n∑i=1(ni)fn−i。
推一推 fn=2n∑i=1(ni)fn−ifn=2n∑i=1n!i!(n−i)!fn−ifn2⋅n!=n∑i=11i!⋅fn−i(n−i)!
熟悉的卷积形式(其实也不是很熟悉)
于是结合分治 NTT 就有了一个垃圾的 O(nlog2n) 解法……
似乎还有一个 log 的解法和线性的解法……
代码:
1 |
|