根据宿命多项式和NOI斗主地的套路,一个长度为n的多项式可以被唯一表示成n个上升/下降幂多项式的和。
把题目给的式子写成这样子的形式:
$sum_{i=D}^{D+T-1}C_{i}^Lsum_{j=0}^{K-1}i^jA^{K-1-j}C_{K-1-j}^j$
它的意思是:后面的部分=在若干个A插入一些i,每个空最多插一个(不然不符合条件)
把后面的表示成$F(i)$
式子变成了$frac{1}{L!}sum_{i=D}^{D+T-1}frac{i!}{(i-L)!}F(i)$
用前面说的转化来把式子变成上升幂。设每个的系数为a[i],则变成了:
$F(x)=sum_{i=0}^{K-1}a_i(x+1)^{overline{i}}=sum_{i=0}^{K-1}a_ifrac{(x+i)!}{x!}$
继续推导公式:
$frac{1}{L!}sum_{i=D}^{D+T-1}frac{i!}{(i-L)!}sum_{j=0}^{K-1}a_jfrac{(i+j)!}{i!}=frac{1}{L!}sum_{j=0}^{K-1}a_jsum_{i=D}^{D+T-1}frac{(i+j)!}{(i-L)!}$
后面的阶乘可以被变成组合数:
$frac{1}{L!}sum_{j=0}^{K-1}a_j(j+L)!sum_{i=D}^{D+T-1}C_{i+j}^{j+L}=frac{1}{L!}sum_{j=0}^{K-1}a_j(j+L)!(C_{D+T+j}^{j+L+1}-C_{D+j}^{j+L+1})$
后面用了个组合数递推公式:添加一个新的组合数即可得到这个公式。
如果我们得知a[i],即可在O(k)计算这个式子。
a[i]看似只能高斯消元计算。但是把F函数变成组合数的形式,就会变成:
$F(x)=sum_{i=0}^{K-1}a_ifrac{(x+i)!}{x!}=sum_{i=0}^{K-1}a_ii!C_{x+i}^i$
后面的负组合数可以被转化成正组合数:c(-x,y)=c(x+y-1,y)*(-1)^y
把-1,-2,..-k带入(记为-n-1)得到
$F(-n-1)=sum_{i=0}^{K-1}a_ii!C_{-n-1+i}^i=sum_{i=0}^{K-1}a_ii!C_{n}^i(-1)^i=sum_{i=0}^{n}a_ii!C_{n}^i(-1)^i$
使用二项式反演的形式之一(较为不常用)得到
$a_nn!=sum_{i=0}^nF(-n-1)C_n^i(-1)^i$
展开组合数发现是个卷积。
f()可以使用矩阵乘法计算,dp一下即可。
考试时想用斯特林数拆幂,也想到了矩阵乘法。但是没有想到斗主地推公式套路所以没做出此题。
同时,二项式反演不熟,要加强。
总结:这道题用到了很多推式子技巧。以后要多做推式子的题提升感觉。