cojs QAQ的矩阵 题解报告

题目描述非常的清晰

首先我们考虑(A*B)^m的求法,这个部分可以参考BZOJ 杰杰的女性朋友

我们不难发现(A*B)^m=A*(B*A)^(m-1)*B

A*B是n*n的矩阵,而B*A是k*k的矩阵,这样就大大缩小了矩阵的大小

因为矩阵乘法满足结合律,我们先对(B*A)做快速幂,之后乘一下就可以了

之后我们考虑如果没有(i-1)^3的这个系数怎么求G(i)的前缀和

因为矩阵乘法满足分配率,我们利用矩阵倍增((B*A)^0+(B*A)^1……+(B*A)^(m-1))之后乘一下就可以了

之后我们发现把系数配进去我们需要求sigma(i^3*(B*A)^i)这个矩阵

我们考虑sigma(i*(B*A)^i)的求法

设F(i)=i*(B*A)^i,H(i)=(B*A)^i

F(i)= j*(B*A)^i + (i-j) *(B*A)^i = (j*(B*A)^j * (B*A)^(i-j)) + ((i-j)*(B*A)^(i-j) *(B*A)^j)

F(i)=F(j)*H(i-j)+F(i-j)*H(j)

同理我们将i^2转化成(j+(i-j))^2之后展开会得到i^2*(B*A)^i的公式

然后同样转化i^3也可以得到类似的公式

这样我们重新定义一下矩阵乘法就可以同样利用矩阵倍增求出sigma(i^3*(B*A)^i)了

这样就可以得到答案了

posted @ 2016-05-29 21:10  _Vertical  阅读(325)  评论(0编辑  收藏  举报