题外话
问了下出题人(好像是?),做法跟我差不多,发一下
做法
有,
[f_{i,j}=f_{i-1,j}+f_{i-1,j-1}(a_i-(j-1))
]
翻转下标:(g_{i,j}=f_{i,i-j}),有,
[g_{i,j}=g_{i-1,j-1}+g_{i,j}(a_i-(i-j-1))
]
整理得
[g_{i,j}=g_{i-1,j-1}+g_{i,j}(j+1)++g_{i,j}(a_i-i)
]
对于最后一种转移,可以分治fft,单独考虑方程,
[g_{i,j}=g_{i-1,j-1}+g_{i,j}(j+1)
]
根据其组合意义,容易得到:
[g_{i,j}=[frac{x^i}{i!}]e^xfrac{(e^x-1)^j}{j!}
]
那么考虑(g_{i,?})这一行求和,有:
[sum g_{i,j}=[frac{x^i}{i!}]e^xe^{e^x-1}
]
对于(n)的答案,令(A(x)=prodlimits_{i=1}^n ((a_i-i)x+1)),(B(x)=e^xe^{e^x-1}),
[ans_n=sum [x^i]A(x)[x^{n-i}]B(x)
]
这个答案,显然可以通过分治fft解决:每次递归到右边时用(A(x)_{l,mid})做一次减法卷积。