关于矩阵乘法优化

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\)),然后就考虑指数,同底数相乘,指数相加,于是就十分方便的矩乘

直接根据转移构造矩阵,这题比较基础,然后注意指数取模要用费马小

然后直接快速幂

附上转移矩阵:

posted @ 2024-02-22 20:50  zhy_learn  阅读(22)  评论(0编辑  收藏  举报