矩阵——导学档案

食用方法:按照提示完成下列习题

初识矩阵

你需要知道:矩阵的基础运算和基本性质(如矩阵的加法与乘法、矩阵满足结合律不满足交换律等)

1.基础

【模板】矩阵快速幂
学矩阵优化一定要会打矩阵快速幂!

2.矩阵加速递推数列

【模板】斐波那契数列
最经典数列优化,看透本质!

[ f n , f n − 1 ] × [ 1 1 1 0 ] = [ f n + 1 , f n ] [f_n,f_{n-1}]\times \left[\begin{matrix} 1 & 1 \\ 1 & 0 \end{matrix} \right]=[f_{n+1},f_n] [fn,fn1]×[1110]=[fn+1,fn]

[ f n , f n − 1 ] = [ f 0 , f 1 ] × [ 1 1 1 0 ] n − 1 [f_n,f_{n-1}]= [f_0,f_1]\times \left[\begin{matrix} 1 & 1 \\ 1 & 0 \end{matrix} \right]^{n-1} [fn,fn1]=[f0,f1]×[1110]n1

一定要明白如何构造矩阵!

【模板】矩阵加速(数列)
其他数列也一样优化!

拓展:
A. 需要多一些信息才能构造的矩阵,如:

a 0 = 1 a_0 = 1 a0=1 a 1 = 1 a_1 = 1 a1=1

a n = ( a n − 1 + a n − 2 + n 2 ) a_n = (a_{n-1}+a_{n-2}+n^2) an=(an1+an2+n2) m o d mod mod p p p

提示:构造递推 n 2 n^2 n2 时还需要维护 n n n 1 1 1

更多应用:求斐波那契数列前 n n n 项和(矩阵中多出一个位置留给求和)

B. 维度更大的矩阵优化(见下面例题)

3.矩阵优化动态规划

矩阵优化的本质在于:

  1. 动态规划本质也是一个递推的过程

  2. 可以想象成棋盘上有若干棋子,每一轮每个棋子都会转移到棋盘上不同的位置上,转移的方式满足一定规律,一共要进行很多轮。由于棋子只能在棋盘上转移,所以转移相对固定。这种时候,我们就可以使用矩阵优化加速转移,只要进行 l o g n logn logn 轮就能知道答案。

概率dp:别踩地雷

一条路上有 N N N 个地雷。小 D 站在起点 1 1 1 的位置,每次有概率 p p p 1 1 1 步,有概率 ( 1 − p ) (1−p) (1p)
2 2 2 步。给出 N , p N,p N,p N N N 个雷的坐标 X i X_i Xi​,请你求出小 D 踩不到地雷的概率是多少。 N ≤ 5 × 1 0 4 , 0.2 ≤ p ≤ 0.8 , 1 ≤ X i ≤ 1 0 18 N \leq 5\times10^4, 0.2 \leq p \leq 0.8, 1 \leq X_i \leq 10^{18} N5×104,0.2p0.8,1Xi1018

把路面分成 N N N 段。容斥计算 ( 1 − 恰好踩到地雷的概率 ) (1-恰好踩到地雷的概率) (1恰好踩到地雷的概率) d p i = p × d p i − 1 + ( i − p ) × d p i − 2 dp_i=p\times dp_{i-1}+(i-p)\times dp_{i-2} dpi=p×dpi1+(ip)×dpi2,然后构造矩阵优化。

二维dp优化:统计方案数

依次选取 n n n 0 ∼ 3 0∼3 03 之间的整数,求它们的和是 3 3 3 的倍数的方案数对 1 0 9 + 7 10^9+7 109+7 取模后的结果。 n ≤ 1 0 18 n\leq 10^{18} n1018

f i , j f_{i,j} fi,j 表示选了 i i i 个数,这些数的和对 3 3 3 取模为 j j j 的方案数,答案即为 f i , 0 f_{i, 0} fi,0

初值: f 0 , 0 = 1 f_{0,0}=1 f0,0=1,转移如下:

{ f i , 0 = 2 × f i − 1 , 0 + f i − 1 , 1 + f i − 1 , 2 f i , 1 = f i − 1 , 0 + 2 × f i − 1 , 1 + f i − 1 , 2 f i , 2 = f i − 1 , 0 + f i − 1 , 1 + 2 × f i − 1 , 2 \left\{ \begin{aligned}f_{i,0}=2\times f_{i-1,0}+f_{i-1,1}+f_{i-1,2} \\ f_{i,1}=f_{i-1,0}+2\times f_{i-1,1}+f_{i-1,2} \\ f_{i,2}= f_{i-1,0}+f_{i-1,1}+2\times f_{i-1,2}\end{aligned} \right. fi,0=2×fi1,0+fi1,1+fi1,2fi,1=fi1,0+2×fi1,1+fi1,2fi,2=fi1,0+fi1,1+2×fi1,2
然后进行矩阵优化。

难度提升!

习题1:[蓝桥杯 2015 省 AB] 垒骰子

思路点拨:与《统计方案数》类似,写出二维转移方程即可。

习题2:[TJOI2017] 可乐

思路点拨:动态规划,先写出每个点能由哪些点到达,“停在原地”可以理解为自己走到自己,“自爆”可以理解为走到一个没有出边的" 0 0 0 号点"进行转移,也可以理解为转移结束,然后求出前 t t t 秒内所有的方案和。这两种方法最终构造的矩阵是差不多的。


至此,你已经掌握了矩阵的基本用法了!恭喜!

我们将在下一节课继续探讨矩阵乘法的更多更高级的优化,敬请期待吧~

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值