Codechef CLOWAY Future of draughts(矩阵的特征多项式和迹和特征值的k次幂和,FFT只是随便写写)

本文介绍了如何预处理并计算矩阵的特征值和迹的k次幂和,利用FFT进行二项式反演,通过凯莱哈密顿定理进行线性递推,并探讨了如何在O(n^3)时间内求解矩阵的特征多项式,最终实现高效求解tr(A^k)的算法。
摘要由CSDN通过智能技术生成

感谢EI教育,学到许多(虚脱)
题目
在这里插入图片描述
在这里插入图片描述

问题简化:
注意到 T T T很小 Q Q Q很大,我们想把答案预处理出来。
如果每次可以选择不动的话,答案
G l , r k = ∏ i = l r t r ( ( A i + I ) k ) G_{l,r}^{k} = \prod_{i=l}^rtr((A_i+I)^k) Gl,rk=i=lrtr((Ai+I)k)
t r tr tr代表 t r a c e trace trace,迹(一个矩阵对角线的和,他等于其特征值的和)。

P a r t 1 : \mathcal Part1 : Part1:随便写写的FFT:
二项式反演一下 F l , r k F_{l,r}^{k} Fl,rk(每回合不能不动的方案数):
G l , r k = ∑ i = 0 k F l , r i ( k i ) G_{l,r}^k =\sum_{i=0}^kF_{l,r}^i \binom ki Gl,rk=i=0kFl,ri(ik)
F l , r k = ∑ i = 0 k G l , r i ( k i ) ( − 1 ) k − i F_{l,r}^k =\sum_{i=0}^kG_{l,r}^i \binom ki (-1)^{k-i} Fl,rk=i=0kGl,ri(ik)(1)ki
UPD:模数这么不友好的吗

P a r t 2 : \mathcal Part2: Part2: t r ( ( A i + I ) k ) tr((A_i+I)^k) tr((Ai+I)k)即矩阵 k k k次方的迹之和。
注意这里是要对 T T T个不同的矩阵对 1.... k 1....k 1....k次方都要求答案。
我会 n 3 k n^3k n3k矩阵乘法 ! ! !
很好入土吧。
注意到我们只需要求迹。
根据迹的性质:
t r ( A + B ) = t r ( A ) + t r ( B ) tr(A + B) = tr(A) + tr(B) tr(A+B)=tr(A)+tr(B)
t r ( k A ) = k t r ( A ) tr(kA) = ktr(A) tr(kA)=ktr(A)(这是真显然好吧)
以及凯莱哈密顿定理:
C ( A ) = 0 C(A) = 0 C(A)=0其中 C C C A A A的特征多项式 ∑ i = 0 ∣ A ∣ c i x i \sum_{i=0}^{|A|}c_ix^i i=0Acixi
那么 ∑ i = 0 ∣ A ∣ c i A i = 0 \sum_{i=0}^{|A|}c_iA^i = 0 i=0AciAi=0
∑ i = 0 ∣ A ∣ c i A i + w = 0 \sum_{i=0}^{|A|}c_iA^{i+w} = 0 i=0AciAi+w=0

∑ i = 0 ∣ A ∣ c i t r ( A i + w ) = 0 \sum_{i=0}^{|A|}c_itr(A^{i+w})=0 i=0Acitr(Ai+w)=0
那么我们求出特征多项式以及前n项之后就可以 O ( k n ) O(kn) O(kn)线性递推了。

P a r t 3 : \mathcal Part3: Part3:如何求一个矩阵的特征多项式:
我会 O ( n 4 ) ! O(n^4)! O(n4)!
考虑定义:
C ( λ ) = det ⁡ ( λ I − A ) C(\lambda) = \det(\lambda I-A) C(λ)=det(λIA)
这个 λ \lambda λ就是我们特征多项式的变量,我们现在需要求 λ 0... n \lambda^{0...n} λ0...n前面的系数。
通过对 λ \lambda λ取值 0... n 0...n 0...n后计算行列式得到 C ( λ = 0.... n ) C(\lambda=0....n) C(λ=0....n) n + 1 n+1 n+1个点值,然后进行拉格朗日插值即可得到 n n n次多项式 C ( λ ) C(\lambda) C(λ)

这也太暴力了。
考虑一个 O ( n 3 ) O(n^3)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值