矩阵乘法优化递推,NOIP%你赛
给定一个坐标系,可以往左,右,上走,已经走过的点(单次访问中)不可以重复走,一共可以走步,求一共有多少种走法。
题目分析
表神,各单位提供丰富成功地证明了递推公式,然而,不适合这样做的蒟蒻Sulfur6更喜欢打表找规律。
这里我们就假装我们已经打完了这个表,然后发现它的前几项分别是:
后面不打了T ^ T,所以我们发现了一个递推公式:
时间复杂度降至,但是极限数据高达,这时不靠谱。而且会MLE
矩阵
说矩阵优化之前先说说矩阵
形如
简而言之,矩阵是一坨数
矩阵乘法
对于两个大小为和的矩阵,他们相乘后的结果矩阵是一个大小为的矩阵。 对于矩阵的每一位,有:
矩阵优化递推
团长并不知道这种玄学方法的由来,只知道我们可以用这种技巧来转移
这样相乘以后的结果:
也就是说我们可以通过矩阵相乘的方式来求出某递推公式的某一项,即:
如何优化
- 矩阵满足结合律 既然如此,我们就可以出动大杀器,快速幂,这样就可以在的时间内求得递推公式的某一项了。
代码
|
最后说几句
- 这题中使用的矩阵特性就是满足结合律但是不满足交换律
- 因为是考试的题所以说我还是打了文件输入输出
- LaTeX公式和Markdown不兼容真是见鬼了
- 公式打起来好麻烦
- 这道题是可以分块打表的
- 再次%表神cyr
Author: Sulfur6
Origin: http://sulfur6.github.io
Link: http://sulfur6.github.io/matrix-increase/
本文采用知识共享署名-非商业性使用 4.0 国际许可协议进行许可