首页 > 其他分享 >【Note】矩阵加速

【Note】矩阵加速

时间:2022-11-04 11:11:35浏览次数:88  
标签:结合律 运算 矩阵 times Note lambda 加速 乘法

感谢 \(\text{tidongCrazy}\) 倾情授课。

目录


基本形式

\[f_i=k_1f_{i-a_1}+k_2f_{i-a_2}+\cdots+g(i) \]

把递推需要用到的项全部存进矩阵里面,固定的系数则放在转移矩阵里面。最后的那个\(g\),其实可以认为是另外一个(或者多个)递推数列,它涉及了\(f\)的转移,于是一起放在矩阵里面,并且它也实时转移更新着。

比如转移项里面可以有\(3^n\),\(n\)。\(3^n\)到\(3^{n+1}\)的转移只需要带个系数\(3\),而\(n\)到\(n+1\)的转移,我们需要多带一列\(1\)。


基础习题

最简单的一维多阶递推。

P1962 斐波那契数列(例题)

P4838 P哥破解密码(矩阵加速)


稍微up

P1397 [NOI2013] 矩阵游戏(矩阵加速)

处理每一行递推到最后的矩阵,加一个从这一行末尾递推到下一行第一个位置的矩阵,对这个组合快速幂。

P3216 [HNOI2011]数学作业(矩阵加速)

\[f_i=f_{i-1} \times 10^{T(i)}+i \]

发现这个\(T(i)\)不好处理,看看\(n\)才\(10^{18}\),直接跑\(18\)个不同的矩阵。


图论\(\times\)矩阵

大致做法是这样的。在一个图里面跑,题目涉及的路径长度非常大的时候适用。

由\(t-1\)阶的答案扩展到\(t\)阶的答案,需要多扩展一条边。设\(f^t_{i,j}\)表示\(i->j\),走\(t\)步的方案数。则

\[f^{t}_{i,j}=f^{t-1}_{i,k}\times f^1_{k,j} \]

跟矩乘的形式相符,可以以\(1\)阶矩阵为转移矩阵爆加速。

另一个理解则是,这个\(1\)阶的\(01\)矩阵是该图的邻接矩阵,当\(k->j\)有连边时,就能为\(f^{t}_{i,j}\)贡献\(f^{t-1}_{i,k}\)的方案数。

P2233 [HNOI2002]公交车路线(图论与矩阵结合)

P2151 [SDOI2009] HH去散步(有限制的路径计数)

这个限制的做法是,把一条边拆成两个点(表示双向的边)。做完了(

P4159 [SCOI2009] 迷路(图论中邻接矩阵的巧妙转化)

这个边权最多只有\(9\),那我们存储相邻\(9\)阶的信息到一个矩阵里。

...........等一下,这样能做么...

题解给的方法是把一条边暴拆成双向各九个,没了(


分组矩阵

矩阵变化的周期很小,把周期内的每个矩阵处理出来,合在一起快速幂就行了。

P2579 [ZJOI2005]沼泽鳄鱼(分组矩阵优化)

P3821 Isaac(分组矩阵优化)

相比上一题加个二分就好啦。


矩阵乘法变形

P5678 [GZOI2017]河神(矩阵乘法变形)

这俩运算符性质很好,看看下面矩阵乘法结合律的证明吧。

注意与运算的单位是\(111111111\)(

CF576D Flights for Regular Customers(矩阵乘法优化)

按\(d_i\)排序,每次跑到下一个\(d_i\)就加边改矩阵。

由于只需要可行性,可以改成\(01\),位运算,然后bitset压一下。

怎么还有题需要bitset卡个64的

P6569 [NOI Online #3 提高组] 魔法值(矩阵乘法变形+优化)

关于矩阵乘法结合律的证明(sun123zxy)

image

与和或运算显然是满足的。

然后就是这题奇怪的优化,像我这种从来把\(log\)当作不存在的人就已经寄了。

光速幂

杂记

还可以做类似一个结构体内,一些变量相互加减之类变化的运算。

D - Binary Representations and Queries

第一步结论我甚至暂时不会证。

后一步则是让两个元素一一对应的集合(其实就是一对一对的),每次让一边元素加上另一边与之对应元素的值。

这个只是矩阵乘法,而不是矩阵加速(

P7453 [THUSCH2017] 大魔法师

又想提一嘴矩阵的运算律,我一直没搞得比较清楚。

矩阵运算律

矩阵线性运算

(1) 矩阵加法

交换律:\(A+B=B+A\)

结合律:\((A+B)+C=A+(B+C)\)

(2) 矩阵数乘

结合律:\(\lambda\mu A=\lambda(\mu A)\)

分配率 \(1\):\(\lambda(A+B)=\lambda A+\lambda B\)

分配率 \(2\):\((\lambda+\mu)A=\lambda A+\mu A\)

矩阵乘法

结合律 \(1\):\((AB)C=A(BC)\)

结合律 \(2\):\(\lambda (AB)=(\lambda A)B=A(\lambda B)\)

分配率:\(A(B+C)=AB+AC\),\((B+C)A=BA+CA\)

这题是在线段树上做区间乘矩阵,区间覆盖,区间加,区间乘。后三个运算分别对矩阵不同对象。

满足了上述一系列优秀的性质,来考虑怎么打 \(tag\)。

回归最一般的线段树区间乘与区间加。

比如标记 该节点需要先 \(\times a\) 再 \(+b\),子节点已有的标记是需要先 \(\times c\) 再 \(+d\),那么子节点:

\[\begin{aligned} E&=(E\times c+d)\times a+b\\ &=E\times(c\times a)+d\times a+b \end{aligned} \]

那么子节点的 \(c\) 就该变成 \(c\times a\), \(d\) 变成 \(d\times a+b\)。

类比标记打法:该节点需要 \(\times P\) 后分别 $\times v\ ,+k\ ,\ $覆盖

一种方法是拆成乘与加矩阵(\(3\times 3\) 矩阵),另一种是全部拆成乘矩阵。后者(\(4\times 4\) 矩阵,加了一列常数项)应该是好写很多的,但不知道会不会复杂度爆炸(

哦我草,\(5s\) 啊,那没事了,我傻逼了,比上面那个还好写(?)

标签:结合律,运算,矩阵,times,Note,lambda,加速,乘法
From: https://www.cnblogs.com/Kan-kiz/p/16854648.html

相关文章

  • 【Note】贪心
    感谢$\text{orzws/chy}$倾情授课。目录-1.证明方式0.朴素贪心AT2557[ARC073C]BallColoringP2587[ZJOI2008]泡泡堂1.排序AT2672[AGC018C]CoinsP2123皇后游......
  • 学术资源 一键加速
    有道云笔记学术资源一键加速IT技术StackOverflowIT技术问答网站Node.jsnode.js官方网站Kuberneteskubernetes官方网站Springspring官方网站Apache......
  • notepad++搭建gtk3.0/2.0环境_F_hawk189_新浪博客
    准备下载以下内容​​notepad++​​​​mingw​​(包含msys和gcc工具链)​​gtk+bundle​​(2.x或3.x都可以,不过现在官网都是使用msys下载)安装......
  • jubyter notebook 安装conda 虚拟环境
            ......
  • OpenFunction v0.8.0 发布:通过 Dapr Proxy 加速函数启动
    相较于其他函数计算项目,OpenFunction有很多独特的功能,其中之一便是通过Dapr与各种后端服务(BaaS)无缝集成。目前OpenFunction已经支持了Dapr的pub/sub和bindings......
  • 三元组存矩阵
    矩阵转置三元组形式structNode{intr,c,val;//行、列、值};存矩阵三元组的三元组是有序的,按r值递增,再按c值递增。如何更好地保证转置后的矩阵依然有序?......
  • 【线性代数】抽丝剥茧系列之马尔科夫矩阵
    1.矩阵幂的稳态对于矩阵幂乘以向量$A^ku_0$可以拆解为特征值和特征向量乘积和的表示:$$u_k=A^ku_0=Q\Lambda^kQ^T=c_1\lambda_1^kx_1+c_2\lambda_2^kx_2+...$$引出......
  • notepad++下载
    参考:notepad++安装教程_绛橘色de日落的博客-CSDN博客_notepad++安装 1.下载这篇文章的最后有安装包,也有详细教程: notepad++安装教程_绛橘色de日落的博客-CSDN博......
  • 将Matlab中的矩阵写入txt文件的方法
    将Matlab中的矩阵写入txt文件的方法文件操作是一种重要的输入输出方式,即从数据文件读取数据或将结果写入数据文件。MATLAB提供了一系列低层输入输出函数,专门用于文件操作......
  • Ubuntu安装Docker及镜像加速器
    一、安装Dockersudoapt-getupdate&&sudoapt-getinstall-yapt-transport-httpsca-certificatescurlsoftware-properties-common&&curl-fsSLhttps://downloa......