题目
https://www.lanqiao.cn/problems/2110/learning/
一
1 | mod = 1000000007 |
这是看的一个C++题解,因为一开始有一点点没想过来。但是内存超了。发现dp[i][1]
和dp[i][2]
是一样的,做一点改进。
二
1 | mod = 1000000007 |
但是,这个”请求超时,请稍后重试“。
三
1 | mod = 1000000007 |
也是看到了Python的题解用到了矩阵快速幂,所以就想着在二的基础上用矩阵快速幂进行优化,但发现计算dp[i][0] = (dp[i - 1][0] + dp[i - 2][0] + dp[i - 1][1] + dp[i - 1][2]) % mod
的时候用到了前面两行两列的数据,一时没法处理。后来又发现,dp[i - 2]
只用到了一个数,于是就想着把它挪到dp[i - 1]
后面变成一维的。最后也竟然一次写成了矩阵快速幂。