来点 Adjacent Binomial Coefficients 的无组合意义做法。
直接起手一个二元 GF
fn(x,y),其中
xiyj 项的含义是长为
n 的数列,和为
i,最后一项为
j 的答案。边界条件是
f0(x,y)=1−xy1,我们最后需要求的就是
[xmyk]fn(x,y)。
考虑转移
xiyj→xi+kyk 的系数是
(jj+k),这不禁让我们想到
[yk](1−y)j+11。凑一下即可得到下面的式子:
fn(x,y)=1−xyfn−1(x,1−xy1)
我们发现
fn 其实就是,每次令
y 变成
1−xy1,把迭代
1∼n+1 次的结果乘起来得到的分式。
设迭代
i 次的结果是
BiAi,那么有:
BnAn=Bn−1−xAn−1Bn−1
为了方便直接让
An=Bn−1,
Bn=Bn−1−xAn−1。
然后我们可以发现,因为
An=Bn−1,所以连乘的上一项分母和下一项分子总是能抵消的,因此最后有
fn=Bn+11。
把
An=Bn−1 带入
B 的递推式,有
Bn=Bn−1−xBn−2,边界为
B0=1,B1=1−xy。
如果
B0=B1=1,那么
[xi]B 相当于是递推时选了
i 次
n−2,剩下的
n−2i 次选了
n−1 的方案数乘以
(−1)i,因此就是
(−1)i(in−i)。
B1=1−xy 只需要再考虑
−xy 项的贡献即可,可以发现最后有
Bn+1=1−P−yQ1,其中
P,Q 都是关于
x 的多项式。
那么最后问题就是求出
[xmyk]1−P−yQ1,直接展开可得:
[yk]1−P−yQ1=[yk]i≥0∑(P+yQ)i=i≥0∑(ki)Pi−kQk=(1−P)k+1Qk
因此使用多项式
ln,exp 即可做到
O(mlogm)。