我与旧事归于尽,来年依旧迎花开|

dayz_break

园龄:7个月粉丝:5关注:6

2024-08-03 22:37阅读: 10评论: 0推荐: 0

线性代数相关

矩阵

矩阵引入

矩阵引入来源于简洁表示线性方程组

例如:

{2x+5y=104x+9y=39

可以表示为:

[2549]×[xy]

矩阵乘法

定义矩阵 An×m 的矩阵,Bm×q 的矩阵,且有矩阵 C 满足 C=A×B,则

Ci,j=k=1mAi,kBk,j

矩阵快速幂

O(logn) 求矩阵 AAn

矩阵快速幂 = 矩阵乘法 + 快速幂

重点在封装结构体,注意一些细节。

struct Matrix{
ll a[120][120];//有时也要维护行和列
Matrix(){
memset(a,0,sizeof(a));//清空!!
}
inline Matrix operator*(const Matrix &T) const{
Matrix res;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
for(int k=1;k<=n;k++){
//数据过大时,使用快速乘
res.a[i][k]+=a[i][j]*(T.a[j][k])%mod;//是+=!!
res.a[i][k]%=mod;
}
}
}
return res;
}
}x;
inline Matrix Mat_ksm(Matrix y,ll k){
Matrix res;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
res.a[i][j]=y.a[i][j]%mod;
}
}
k--;
while(k>0){
if(k&1) res=res*y;
y=y*y;
k=k>>1;
}
return res;
}

矩阵加速递推

使用矩阵快速幂,将 O(n) 的时间复杂度优化至 O(logn)

类似动态规划的状态转移,明确转移前后矩阵,根据递推式推出后矩阵用前矩阵表示的各个系数,再构造矩阵存下系数,对着构造的矩阵做快速幂,最后乘上初始矩阵。

重点是构造转移矩阵。

例如:P1707 刷题比赛
复杂的构造矩阵

P4910 帕秋莉的手环
矩阵优化 dp

本文作者:dayz-break

本文链接:https://www.cnblogs.com/dayz-break/p/18339797

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   dayz_break  阅读(10)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起