矩阵
前言
这个东西想必各位大佬都会,在这里就是简单的梳理一下
写这个的原因是上次模拟赛,云落和 fjj 讲的矩阵本蒟蒻一点也没听懂
基础运算
加减法
要求两个矩阵的行、列数相同
把两个矩阵的对应元素加减即可
矩阵乘法
-
一个数乘,就直接用这个数
矩阵的每个元素 -
两个矩阵相乘
先放个式子
能看出来乘法要求
性质
有结合律,分配律,但没有交换律
矩阵快速幂加速递推
这是一类套路题
求一个线性递推数列的值,但
以斐波那契数列为例
递推式:
我们可以借助一个矩阵
我们用一种特别规矩麻烦的方法解
展开
把
把初始条件(
当
当
得 a=b=c=1,d=0
好的,那么我们已经会矩阵快速幂了
那么我们再看道题
给出一个
ybt 上的题,让我们来推一遍
所以
则递推为
用跟上面一样的步骤解
展开
把
代入
当
当
得
好的,想必大家已经彻底会了
看道题
求
设
根据递推式,我们可以推出矩阵
1 1 1 0 0 0 0 0 0 0 f[i,0] f[i,0]+f[i,1]+f[i,2] f[i+1,0]
1 1 1 1 0 0 0 0 0 0 f[i,1] f[i,0]+f[i,1]+f[i,2]+f[i,3] f[i+1,1]
1 1 1 1 1 0 0 0 0 0 f[i,2] f[i,0]+f[i,1]+f[i,2]+f[i,3]+f[i,4] f[i+1,2]
0 1 1 1 1 1 0 0 0 0 f[i,3] f[i,1]+f[i,2]+f[i,3]+f[i,4]+f[i,5] f[i+1,3]
0 0 1 1 1 1 1 0 0 0 x f[i,4] = f[i,2]+f[i,3]+f[i,4]+f[i,5]+f[i,6] = f[i+1,4]
0 0 0 1 1 1 1 1 0 0 f[i,5] f[i,3]+f[i,4]+f[i,5]+f[i,6]+f[i,7] f[i+1,5]
0 0 0 0 1 1 1 1 1 0 f[i,6] f[i,4]+f[i,5]+f[i,6]+f[i,7]+f[i,8] f[i+1,6]
0 0 0 0 0 1 1 1 1 1 f[i,7] f[i,5]+f[i,6]+f[i,7]+f[i,8]+f[i,9] f[i+1,7]
0 0 0 0 0 0 1 1 1 1 f[i,8] f[i,6]+f[i,7]+f[i,8]+f[i,9] f[i+1,8]
0 0 0 0 0 0 0 1 1 1 f[i,9] f[i,7]+f[i,8]+f[i,9] f[i+1,9]
我们把矩阵
矩阵乘法与路径问题
1.两点只经过
结论:用邻接矩阵存图,计算矩阵的
证明:
很简单
当
当
好像floyd啊
这个也好理解,
当
路径为 3 可以拆成路径为 2 和路径为 1 的,其他跟上面一样
好的,做道题
一个有向图有
现在给出该有向图,你能告诉 windy 总共有多少种不同的路径吗?
答案对
注意:windy 不能在某个节点逗留,且通过某有向边的时间严格为给定的时间。
这道题跟上面的模板就差边权了
但是这个很好处理,把边拆开就行了
2.两点只经过
这个跟上面的是一样的,只不过要用广义的矩阵乘法
努力讲
云落和 fjj 切的题
写成矩阵
然后捏,看能不能用线段树维护
就是看他有没有结合律
不严谨的推法
乘法有结合律
加法有交换律
把
好了,他可以用线段树维护
那么我们枚举最小值,把
后记
为什么今年没有圣诞老人……
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】