关于矩阵乘法优化
3373. Line、
通过简化状态,我们可以得到\(f_{i,j,a,b}\)表示到第i列,有j个空列,有a行为1,b行为10,n-a-b为100
技巧:注意特殊条件,如行的顺序与方案无关,还有一些原状态的值域很小的可以特殊处理(所以可以把多维合成n-1维,n为值域,如上题为3)
然后矩阵乘法,注意矩阵乘法一般只优化一维,然后其它维要压成一维,进行矩阵乘法,所以状态要很简洁
如上题,矩阵乘法时间复杂度为\(O(logi·j·a·b)\)
注:表示的ijab是范围
2867. Contra
也是一道矩阵乘法优化,不过是期望DP,以后题多了专门开一章讲
主要是要记一个思想:
如果我们要求\(\sum_i f_{n,i}*p_i\),可以如下图构造矩阵
如果我们要求\(\sum_i\sum_j f_{i,j}*p_i\),可以如下图构造矩阵
反正矩阵乘法就是把数组全部丢进去,不行就多加一维
6275. 小L的数列
矩乘裸题
直接看f数组不好矩乘(因为递推式有\(\prod\)),然后就考虑指数,同底数相乘,指数相加,于是就十分方便的矩乘
直接根据转移构造矩阵,这题比较基础,然后注意指数取模要用费马小
然后直接快速幂
附上转移矩阵: