ICPC2021银川C
题外话
问了下出题人(好像是?),做法跟我差不多,发一下
做法
有,
\[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^x\frac{(e^x-1)^j}{j!}
\]
那么考虑\(g_{i,?}\)这一行求和,有:
\[\sum g_{i,j}=[\frac{x^i}{i!}]e^xe^{e^x-1}
\]
对于\(n\)的答案,令\(A(x)=\prod\limits_{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}\)做一次减法卷积。