cojs QAQ的矩阵 题解报告
2016-05-29 21:10
363 查看
题目描述非常的清晰
首先我们考虑(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)了
这样就可以得到答案了
首先我们考虑(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)了
这样就可以得到答案了
相关文章推荐
- 面向对象
- Web前端学习第十四天·fighting_JavaScript概述
- ALM:TypeScript / JavaScript 的下一代 IDE
- ALM:TypeScript / JavaScript 的下一代 IDE
- JS高级(作业域链,闭包,面向对象)
- MyEclipse:(1)修改javascript代码行的背景色
- 20个常用的javascript正则表达式
- 《JavaScript学习笔记四》:getElementsByTagName的使用以及全选、反选和取消功能实现
- serservlet 一生
- JSTL不能使用的问题
- 吃透Javascript数组操作的正确姿势—再读《Js高程》
- d3.js学习笔记(2)—— Transition
- IE11 Windows7下F12 DOC资源管理器不能用Exception in window.onload: Error: An error has ocurredJSPlugin.3005
- javascript加载xml文件,兼容Chrome
- 从js向Action传中文参数出现乱码问题的解决方法
- servlet与jsp核心编程(持续更新)
- ES5, ES6, ES2016, ES.Next: JavaScript 的版本是怎么回事?「译」
- 用原生JavaScript实现图片瀑布流的浏览效果
- javascript中的立即执行函数
- 从零开始学_JavaScript_系列(22)——dojo(9)(表单、JsonRest的post方法,widget的使用思路)