【模板】常系数非齐次线性递推【落谷p5808】

问题引入

因为一些原因,变量名与题面中的变量名有不同,题解中以这里声明的变量名为准

给出一多项式F(x)=∑i=0kfixiF(x)=i=0∑k​fi​xi和递推式ap=∑i=1nbiap−i+F(p)(p≥n)ap​=i=1∑n​bi​ap−i​+F(p)(p≥n)和初始值a0,a1,...,an−1a0​,a1​,...,an−1​,求bmbm​的值。n,k≤30000,m<109n,k≤30000,m<109。

前置芝士

算法流程

类似于齐次线性递推,我们先考虑矩阵快速幂的暴力:

A=(an−1an−2...a0nknk−1...n0)A=(an−1​​an−2​​...​a0​​nk​nk−1​...​n0)​

B=(B1n×n0n×(k+1)B2(k+1)×nB3(k+1)×(k+1))B=(B1​n×n​B2​(k+1)×n​​0n×(k+1)​B3​(k+1)×(k+1)​​)

其中

B1n×n=(b1100...0b2010...0b3001...0⋮⋮⋮⋮⋱⋮bn000...0)B1​n×n​=⎝⎜⎜⎜⎜⎜⎜⎛​b1​b2​b3​⋮bn​​100⋮0​010⋮0​001⋮0​.........⋱...​000⋮0​⎠⎟⎟⎟⎟⎟⎟⎞​

B2(k+1)×n=(fk00...0fk−100...0⋮⋮⋮⋱⋮f000...0)B2​(k+1)×n​=⎝⎜⎜⎜⎜⎛​fk​fk−1​⋮f0​​00⋮0​00⋮0​......⋱...​00⋮0​⎠⎟⎟⎟⎟⎞​

B3(k+1)×(k+1)=((kk)00...0(kk−1)(k−1k−1)0...0(kk−2)(k−1k−2)(k−2k−2)...0⋮⋮⋮⋱⋮(k0)(k−10)(k−20)...(00))B3​(k+1)×(k+1)​=⎝⎜⎜⎜⎜⎜⎜⎜⎛​(kk​)(k−1k​)(k−2k​)⋮(0k​)​0(k−1k−1​)(k−2k−1​)⋮(0k−1​)​00(k−2k−2​)⋮(0k−2​)​.........⋱...​000⋮(00​)​⎠⎟⎟⎟⎟⎟⎟⎟⎞​

B1B1​矩阵就是齐次线性递推中的矩阵,B2B2​将F(n)F(n)加入进当前的数,而B3B3​通过二项式定理将(nknk−1...n0)(nk​nk−1​...​n0)​变为((n+1)k(n+1)k−1...(n+1)0)((n+1)k​(n+1)k−1​...​(n+1)0)​。

那么答案就是(ABm)n(ABm)n​。

我们如果可以得到BB的特征多项式f(λ)=∣λI−B∣f(λ)=∣λI−B∣就是齐次线性递推那一套了。

注意到λI−B=(λI−B10−B2λI−B3)λI−B=(λI−B1​−B2​​0λI−B3​​),利用矩阵分块的经典结论,∣λI−B∣=∣λI−B1∣∣λI−B3∣∣λI−B∣=∣λI−B1​∣∣λI−B3​∣。

在齐次线性递推中我们已经知道了∣λI−B1∣=λn−∑j=1nbiλn−i∣λI−B1​∣=λn−j=1∑n​bi​λn−i,而λI−B3λI−B3​是一个下三角矩阵,故∣λI−B3∣=(λ−1)k+1∣λI−B3​∣=(λ−1)k+1,那么∣λI−B∣=(λ−1)k+1(λn−∑j=1nbiλn−i)∣λI−B∣=(λ−1)k+1(λn−j=1∑n​bi​λn−i)。卷一下就可以得到其表示。


可以发现其特征多项式是n+k+1n+k+1次的,所以我们还需要求出an,an+1,...,an+kan​,an+1​,...,an+k​才行。

定义b0=0b0​=0,递推式可以被表示为A(x)=A(x)∗B(x)+P(x)A(x)=A(x)∗B(x)+P(x)的形式,其中A(x)=∑i=0∞aixi,B(x)=∑i=0nbixiA(x)=i=0∑∞​ai​xi,B(x)=i=0∑n​bi​xi,而P(x)P(x)则相对复杂:在i≥ni≥n时遵循递推式,那么[xi]P(x)=F(i)[xi]P(x)=F(i);在i<ni<n时需要用P(x)P(x)把系数补上,那么[xi]P(x)=ai−∑j=0iajbi−j[xi]P(x)=ai​−j=0∑i​aj​bi−j​。

那么A(x)=P(x)1−B(x)A(x)=1−B(x)P(x)​,求逆卷一下然后多点求值就可以得到A(x)A(x)的前n+kn+k项。

注 :在落谷上不要抄呦

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值