矩阵乘法
文章平均质量分 90
矩阵运算
ez_lcw
这个作者很懒,什么都没留下…
展开
-
【XXSY】棋盘(矩阵乘法,trick)
题面棋盘题解直接的想法是矩阵加速 DP,记录两行的 DP 状态,用一个大小为 2n×2n2n\times 2n2n×2n 的矩阵记录,每次相当于询问一段区间的矩阵乘积,如果使用线段树维护的话是 O(n3qlogq)O(n^3q\log q)O(n3qlogq) 的。使用优化可以做到 O(n3q+n2qlogq)O(n^3q+n^2q\log q)O(n3q+n2qlogq),下文算法中的优化方法与此优化方法类似,先略去。注意到询问的 l,rl,rl,r 是单调的,有一个 trick:对于原创 2021-11-11 22:17:23 · 444 阅读 · 0 评论 -
【UOJ424】count(笛卡尔树,DP,生成函数,矩阵快速幂)
首先可以发现两个序列 A,BA,BA,B 同构当且仅当它们的笛卡尔树同构。那么可以考虑枚举笛卡尔树,然后判断它能否构成满足题目条件的序列。发现一棵笛卡尔树满足条件当且仅当它有 nnn 个节点~~(废话)~~,而且它的最长左链长度不超过 m−1m-1m−1。定义一条链的左链长度为这条链上向左的边数,一棵树的最长左链长度为这棵树所有从根到叶子的链的左链长度的最大值。那么就可以 DP 了:设 fn,mf_{n,m}fn,m 表示 nnn 个点、最长左链长度+1不超过 mmm 的笛卡尔树个数。这里定义状原创 2021-10-18 17:04:34 · 170 阅读 · 0 评论 -
【XSY3915】数学作业(常系数齐次线性递推,多项式,矩阵快速幂)
题面数学作业题解看到 mmm 很大,联想到矩阵快速幂。由于对于每个初始的 xxx,它变成 111 的方法是唯一的。所以我们可以考虑从 111 倒推,这样用不同的方法倒推得到的数肯定是不同的,所以不会算重。为了方便,我们从 000 而不是 111 开始倒推,此时原来倒推 mmm 步就变成了倒推 m+1m+1m+1 步(这样会算多,但我们最后再处理多出来的这一部分)。假设当前数为 xxx,考虑 xxx 向前倒推:若 x≢k−1(modk)x\not \equiv k-1 \pmod kx≡k−原创 2021-03-14 10:09:36 · 194 阅读 · 0 评论 -
【AGC003F】Fraction of Fractal(dp,矩阵快速幂)
先说一下下文会用到的定义或称呼的意思:称单位分形为题目给出的 111 级分形。称一种分形左右联通,则说明将两个这种分形左右放在一起时,至少有一个连通块是跨越这两个分形的。设一种分形的左右联通个数 side0side_0side0 表示,当两个这种分形左右放在一起时,所贡献的连通块个数,即有多少个连通块是跨越左右两个分形的。显然,当一种分形左右不连通时,side0=0side_0=0side0=0。设一种分形的 tot0tot_0tot0 表示有多少组黑色单元格是左右相邻的。比如下图中原创 2020-10-17 16:37:16 · 111 阅读 · 0 评论 -
【SDOI2009】HH去散步(dp,矩阵快速幂)
看到题目第一眼,最暴力的想法就是设 dp(i,j)dp(i,j)dp(i,j) 表示以 aaa 为起点、iii 为终点,路径长度为 jjj 的路径数。容易得到状态转移方程:dp(u,j)=∑(v,u)dp(v,j−1)dp(u,j)=\sum_{(v,u)}dp(v,j-1)dp(u,j)=∑(v,u)dp(v,j−1)。但是我们发现一个问题:题目中要求“人物不能立刻沿着刚刚走来的路走回”,但显然这种 dp 方式是不符合要求的,所以想怎么解决。这里用到一个常用的小trick:我们先把双向边拆成两条单原创 2020-07-24 17:14:53 · 129 阅读 · 0 评论 -
【BZOJ3329】Xorequ(数位dp+矩阵快速幂)
由 x⊕3x=2xx\oplus3x=2xx⊕3x=2x 推出 x⊕2x=3xx\oplus2x=3xx⊕2x=3x,然后又有 x+2x=3xx+2x=3xx+2x=3x。定理:若 a⊕b=ca\oplus b=ca⊕b=c 且 a+b=ca+b=ca+b=c,则不可能存在 aaa、bbb 在二进制下的某一位都是 111。证明:设 aaa 在二进制下的第 iii 位为 aia_iai,bbb 在二进制下的第 iii 位为 bib_ibi,ccc 在二进制下的第 iii 位为 cic_ici。显然有原创 2020-07-17 18:44:51 · 383 阅读 · 0 评论 -
[NOI Online #3 提高组] 魔法值(矩阵快速幂+各种优化)
矩阵快速幂相信其他巨佬讲矩阵快速幂的原理和过程都已经很详细了,这里我就着重讲一讲用裸的矩阵快速幂算法之后,如何优化。优化1:优化矩阵乘法这个好几位大佬讲过了,我也不讲了,主要就是把 O(n3)O(n^3)O(n3) 的矩阵乘法优化到 O(n2)O(n^2)O(n2)。优化2:倍增预处理矩阵倍增预处理矩阵的核心思想就是:将 2k2^k2k 个转移矩阵相乘出来的矩阵预处理出来,并记录为 mkm_kmk,那么通过 mk=mk−12m_k=m_{k-1}^2mk=mk−12 就可以用 323232原创 2020-05-25 18:25:27 · 238 阅读 · 0 评论 -
【XSY2538】/【HDU6155】Subsequence Count(矩阵乘法+线段树)
题目翻译Description给定一个010101串 S1...nS_{1...n}S1...n 和 QQQ 个操作。操作有两种类型:1、将 [l,r][l,r][l,r] 区间的数取反(将其中的000变成111,111变成000)。2、询问字符串 SSS 的子串 Sl...rS_{l...r}Sl...r 有多少个不同的子序列。由于答案可能很大,请将答案对 109+710^9+71...原创 2019-08-20 15:02:27 · 184 阅读 · 0 评论