专栏文章

腾飞计划寒假第三课——矩阵快速幂&矩阵快速幂优化dp 2025/2/4

个人记录参与者 1已保存评论 0

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
0 条
当前快照
1 份
快照标识符
@miq9o2uj
此快照首次捕获于
2025/12/04 01:14
3 个月前
此快照最后确认于
2025/12/04 01:14
3 个月前
查看原文

P2044 [NOI2012] 随机数生成器

推出 [a101]×[x0c]=[x1c]\begin{bmatrix}a & 1 \\0 & 1\end{bmatrix}\times\begin{bmatrix}x_0 \\c \end{bmatrix}=\begin{bmatrix}x_1 \\c \end{bmatrix}
solved on 2025/2/17
问题:快速幂终于写对了,但是最后乘上初始矩阵的时候我写的是 ans=(anss.a[0][0]*x+c)%m。这是错的,因为我没有正确理解矩阵快速幂的原理。

P10498 石头游戏

操作序列看成循环节,比如 t=40t=40,循环节长度为 66 就把操作合起来做 66 次再单独做 44 次。
如果操作序列长度不一样,就把他们的 lcm\text{lcm} 次合起来做。

P2579 [ZJOI2005] 沼泽鳄鱼

和上题思路差不多,发现 2,3,42,3,4lcm\text{lcm}1212,所以每过 1212 秒食人鱼就回到了原来的位置,把 1212 做成循环节,搞 1212 个矩阵,合在一起快速幂,剩下的单独做就行。

P1707 刷题比赛

三个人构造相邻两天的矩阵
[01000000000qp0101rt1000001000000001vu0100010000001000000101yx01201000000121000000000110000000000100000000000w00000000000z]×[akak+1bkbk+1ckck+1k2k1wkzk]=[ak+1ak+2bk+1bk+2ck+1ck+2(k+1)2k+11wk+1zk+1]\begin{bmatrix}0&1&0&0&0&0&0&0&0&0&0\\q&p&0&1&0&1&r&t&1&0&0\\0&0&0&1&0&0&0&0&0&0&0\\0&1&v&u&0&1&0&0&0&1&0\\0&0&0&0&0&1&0&0&0&0&0\\0&1&0&1&y&x&0&1&2&0&1\\0&0&0&0&0&0&1&2&1&0&0\\0&0&0&0&0&0&0&1&1&0&0\\0&0&0&0&0&0&0&0&1&0&0\\0&0&0&0&0&0&0&0&0&w&0\\0&0&0&0&0&0&0&0&0&0&z\end{bmatrix}\times\begin{bmatrix}a_k\\a_{k+1}\\b_k\\b_{k+1}\\c_k\\c_{k+1}\\k^2\\k\\1\\w^k\\z^k\end{bmatrix}=\begin{bmatrix}a_{k+1}\\a_{k+2}\\b_{k+1}\\b_{k+2}\\c_{k+1}\\c_{k+2}\\(k+1)^2\\k+1\\1\\w^{k+1}\\z^{k+1}\end{bmatrix}

P3216 [HNOI2011] 数学作业

ansansxx 压成一个矩阵
[1010011001]×[ansx1]=[nextansx+11]\begin{bmatrix}10&1&0\\0&1&1\\0&0&1\end{bmatrix}\times\begin{bmatrix}ans\\x\\1\end{bmatrix}=\begin{bmatrix}nextans\\x+1\\1\end{bmatrix}
多位数分开计算,一位数算一遍,算完之后把 1010 改成 100100 算两位数,再改成 10001000 算三位数,最多 1818 位。

P3990 [SHOI2013] 超级跳马

暴力 dp 非常简单。
就是维护一个前缀和,gi,jg_{i,j}表示与其奇偶性相同的 fk,jf_{k,j} 的和,即 gi,j=fi,j+fi2,j+fi4,jg_{i,j}=f_{i,j}+f_{i-2,j}+f_{i-4,j}
fi,j=gi1,j+gi1,j1+gi1,j+1f_{i,j}=g_{i-1,j}+g_{i-1,j-1}+g_{i-1,j+1}
gi,j=gi2,j+fi,jg_{i,j}=g_{i-2,j}+f_{i,j}
矩阵优化时维护 ggffggff 固定在同一个矩阵里,像 P1707 一样推状态转移矩阵。

CF1117D Magic Gems

不难,但是没记完。

P6190 [NOI Online #1 入门组] 魔法

暴力是分层图最短路。
fi,kf_{i,k} 表示从 11ii 用了 kk 次的最短路。
fi,k=min(fj,k1aj,i,fj,k+aj,i)f_{i,k}=\min(f_{j,k-1}-a_{j,i},f_{j,k}+a_{j,i})
fi,j,xf_{i,j,x}xx 次,从 iijj 的最短路。
fi,j,k=min(fi,k,x1+fk,j,1)f_{i,j,k}=\min(f_{i,k,x-1}+f_{k,j,1})
A=fi,j,1A=f_{i,j,1}B=fi,j,xB=f_{i,j,x}
形如 B=min(B+A)B=\min(B+A)
设矩阵 CC
Ci,j=min(Bi,k+Ak,j)C_{i,j}=min(B_{i,k}+A_{k,j})
广义矩阵乘法。

P5678 [GZOI2017] 河神

也是广义矩阵乘法。
形如 Ci,j=(Bi,k  Ak,j)C_{i,j}=\bigoplus(B_{i,k}\ \bigotimes\ A_{k,j})

评论

0 条评论,欢迎与作者交流。

正在加载评论...