随笔分类 -  ACM / 数论 矩阵乘法

摘要:原题链接 考察:矩阵快速幂 思路: 想了dp转移方程,看了题解发现没有这么复杂,利用邻接矩阵的性质就行了,参考Floyd算法,外层每循环一次,相当于经过了一条边,也是转移到了一个新的状态. 把停留看成自环,城市之间的道路就等同于邻接矩阵的原本意义,但是爆炸就比较难处理.大佬的思路是建立虚点,该点只有 阅读全文
posted @ 2021-06-10 14:33 acmloser 阅读(41) 评论(0) 推荐(0) 编辑
摘要:原题链接 考察:矩阵快速幂 错误思路: 想着取对数,然后半天做不出来() 正确思路: 随着f[i]的i变大,a,b的指数是斐波那契数列,再用欧拉降幂+快速幂即可. ##Code #include <iostream> #include <cstring> using namespace std; t 阅读全文
posted @ 2021-06-09 16:17 acmloser 阅读(40) 评论(0) 推荐(0) 编辑
摘要:原题链接 考察:矩阵快速幂 不是人可以想出来的思路.... 思路: 当$i^k$的$i$很大,$k$又很小时,可以考虑二项式展开. \(S_{i+1} = S_{i} +A_{i+1}\) \(A_{i+1} = (i+1)^k \times f_{i+1}\) 然后将$(i+1)^k$进行二进制拆 阅读全文
posted @ 2021-06-09 14:00 acmloser 阅读(37) 评论(0) 推荐(0) 编辑
摘要:原题链接 考察:矩阵快速幂 思路: 将有理项和无理项分开,可以发现两者的系数都有规律.参考了这位大佬的博客,这波我没想出来().对$\sqrt b$的系数取模是不合理的,所以只能另寻他路. ##Code #include <iostream> #include <cstring> #include 阅读全文
posted @ 2021-06-09 09:34 acmloser 阅读(31) 评论(0) 推荐(0) 编辑
摘要:原题链接 考察:矩阵快速幂 两种方法,但我都没想到() 思路一: \[ \left[ \begin{matrix} A & E \\ 0 & E \\ \end{matrix} \right]* \left[ \begin{matrix} A & E \\ 0 & E \\ \end{matrix} 阅读全文
posted @ 2021-06-08 18:17 acmloser 阅读(40) 评论(0) 推荐(0) 编辑
摘要:原题链接 考察:矩阵快速幂+线性dp 思路: 这个dp定义完全不敢往那方面想(),定义f[i][j]为分数为i,最后一位为j的方案数. i==0 f[0][1~base] = 1; 显然 f[1][j] += f[0][k] j与k的差的平方=1 以此类推,但是当i>(base-1)*(base-1 阅读全文
posted @ 2021-06-08 00:08 acmloser 阅读(47) 评论(0) 推荐(0) 编辑
摘要:原题链接 考察:矩阵快速幂 fw本f,想到了把f[i-1]拆开,但没想到只拆一个啊!!! 思路: \(f[i] = 2 \times f[i-1]+1\qquad(i为奇数)\) \(f[i] = f[i-1] + 2 \times f[i-2] +1\) \(f[i] = 2 \times f[i 阅读全文
posted @ 2021-06-07 12:19 acmloser 阅读(29) 评论(0) 推荐(0) 编辑
摘要:原题链接 考察:矩阵快速幂 思路: 就是密码设计那题的矩阵快速幂版.下面是密码设计的递推代码. for(int i=1;i<=n;i++)//已经构造了i个字符. for(int j=0;j<len;j++)//j是已经子串匹配了的位置 for(char k='a';k<='z';k++)//枚举密 阅读全文
posted @ 2021-06-06 21:21 acmloser 阅读(44) 评论(0) 推荐(0) 编辑
摘要:原题链接 考察:dp+矩阵快速幂 思路: 首先了解邻接矩阵的一个性质:当邻接矩阵Tk , aij表示从i到j长度为k的路径数有aij条.以k = 2为例,aij*ajk 表示从i->j有一条路,从j->k有一条路.总体就是i->k有一条路.当j变化时就能得到方案数. 但是这道题的边权并非为1,这个性 阅读全文
posted @ 2021-03-03 10:47 acmloser 阅读(63) 评论(0) 推荐(0) 编辑
摘要:原题链接 考察: 矩阵快速幂 思路: f[N]表示1~n栈灯在t 秒的状态,每盏灯只与它自己和它左边的灯有关.构造n*n的矩阵,在它自己和它左边的灯的位置取1,可以发现res[i] = (f[i-1]*a[j][i]+res[i])%2. 1 #include <iostream> 2 #inclu 阅读全文
posted @ 2021-03-02 22:55 acmloser 阅读(60) 评论(0) 推荐(0) 编辑
摘要:原题链接 考察:矩阵快速幂+floyd最短路 思路: 首先明白这道题不是矩阵相乘,res[i][j] = min(res[i][j],a[i][k]+b[k][j]). a[i][j]如果代表经过x条路的最短路,b[i][j]代表经过y条路的最短路.那么res是经过x+y条路的最短路. 注意: 图上 阅读全文
posted @ 2021-03-02 21:07 acmloser 阅读(101) 评论(0) 推荐(0) 编辑
摘要:原题链接 考察:矩阵快速幂 思路: 构造1X4的矩阵{f[n],f[n-1],f[n-2],S[n]},根据给出的递推公式很容易构造出a矩阵.注意数据有n = 1和n = 0的情况,需要特判. 1 #include <iostream> 2 #include <algorithm> 3 #inclu 阅读全文
posted @ 2021-03-02 17:20 acmloser 阅读(65) 评论(0) 推荐(0) 编辑
摘要:原题链接 考察:矩阵快速幂 思路: 入门题,ans = fk = f*fk-1.注意的是不能只保留主对角线的元素,因为主对角线的元素会随同行同列的元素变化 1 #include <iostream> 2 #include <algorithm> 3 #include <cstring> 4 usin 阅读全文
posted @ 2021-03-02 16:16 acmloser 阅读(38) 评论(0) 推荐(0) 编辑
摘要:原题链接 考察:矩阵快速幂 思路: 题目的递推式是找不到关系矩阵的,由此必须换一个思路.由题目的数据范围发现n小m大,可以考虑由第i列推到第i+1列,我们要由一个1x(n+2)的矩阵*(n+2)x(n+2)的矩阵 = 新的1xn+2的矩阵.从常数项先考虑,我们要从233->2333. 显然 2333 阅读全文
posted @ 2021-03-02 15:45 acmloser 阅读(40) 评论(0) 推荐(0) 编辑
摘要:原题链接 考察:线性dp+矩阵快速幂 思路: 将限制条件作为动态规划的维度,某两个数字不能紧连,这只与骰子的上面或下面有关,可以用f[i][j] 表示第i个骰子,其最上面是j.f[i][j] = f[i-1][k]*4,j的对面与k不互斥,骰子可以绕中心旋转.如果互斥常数就是0.时间复杂度n*6*6 阅读全文
posted @ 2021-03-02 09:19 acmloser 阅读(73) 评论(0) 推荐(0) 编辑
摘要:原题链接 考察:矩阵快速幂 思路: 矩阵快速幂的入门题,记住模板. 1 #include <iostream> 2 #include <cstring> 3 #include <algorithm> 4 #include <cstdio> 5 using namespace std; 6 typed 阅读全文
posted @ 2021-03-01 20:49 acmloser 阅读(50) 评论(0) 推荐(0) 编辑