矩阵
矩阵
设K为一个域,满足\(\forall 1 \leq i,j \leq n,a_{ij}\in K\)的数表
\[A=\begin{pmatrix}
a_{11}&a_{12}&···&a_{1n}\\
a_{21}&a_{22}&···&a_{2n}\\
·&·&&·\\
·&·&&·\\
a_{n1}&a_{n2}&···&a_{nn}\\
\end{pmatrix}\]
称为K上的一个n元矩阵
矩阵乘法
假设\(A=(a_{ij}),B=(b_{ij}),它们的乘积C=AB\)也是一个n元矩阵\(C=(c_{ij}),满足c_{ij}=\sum_{k=1}^{n}a_{ik}\cdot b_{kj}\)
矩阵乘法的性质
1.满足结合率(AB)C=A(BC)
2.满足分配律A(B+C)=AB+AC
3.不满足交换律
矩阵快速幂
点击查看代码
matrix dot(matrix x,matrix y){
matrix sum;
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
sum.a[i][j]=0;
for(int k=0;k<n;k++){
(sum.a[i][j]+=x.a[i][k]*y.a[k][j]%MOD)%=MOD;
}
}
}
return sum;
}
matrix qpow(matrix x,ll y){
matrix sum;
for(int i=0;i<n;i++){
for(int j=0;j<n;j++)sum.a[i][j]=(i==j);
}
while(y){
if(y&1)sum=dot(sum,x);
y>>=1;x=dot(x,x);
}
return sum;
}
矩阵快速幂优化线性递推
1.\(f(n)=a_1f(n-1)+a_2f(n-2)+···+a_kf(n-k)\)
2.\(f(n)=a_1f(n-1)+a_2f(n-2)+C\)
3.\(f(n)=a_1f(n-1)+a_2f(n-2)+c_2n^2+c_1n+c_0\)
\[\begin{pmatrix}
f(n)\\
f(n-1)\\
(n+1)^2\\
n+1\\
1\\
\end{pmatrix}=\begin{pmatrix}
a_1&a_2&c_2&c_1&c_0\\
1&0&0&0&0\\
0&0&1&2&1\\
0&0&0&1&1\\
0&0&0&0&1
\end{pmatrix}*
\begin{pmatrix}
f(n-1)\\
f(n-2)\\
n^2\\
n\\
1
\end{pmatrix}\]
4.\(f(n)=a_{11}f(n-1)+a_{12}g(n-1),g(n)=a_{21}f(n-1)+a_{22}g(n-1)\)
\[\begin{pmatrix}
f(n)\\
g(n)\\
\end{pmatrix}=\begin{pmatrix}
a_{11}&a_{12}\\
a_{21}&a_{22}
\end{pmatrix}*
\begin{pmatrix}
f(n-1)\\
g(n-1)
\end{pmatrix}\]
应用
1方格填色 题解.
2Sasha and Array 题解
3区间加区间sin和 题解
4斐波 题解
5智乃酱的双塔问题 题解