矩阵乘法
HT008_123
家人们点点关注叭
展开
-
P3390 [模板]矩阵快速幂
传送门 这题有毒啊,没开长整型一个都不对,害得我以为我板子写错了QAQ 一个裸的矩阵快速幂,矩阵乘法要求两个矩阵分别为n行m列与m行p列,得出的矩阵是n行p列 矩阵乘法满足结合律,但不满足交换律(所以可以套快速幂的板子) 教科书告诉你,计算规则是,第一个矩阵第一行的每个数字(2 和1),各自乘以第二个矩阵第一列对应位置的数字(1 和1),然后将乘积相加( 2 x 1 + 1 x 1),得到结原创 2017-08-16 15:43:53 · 368 阅读 · 0 评论 -
[SDOI2008] 递归数列
题目描述:雾。题目分析:矩阵快速幂。 搞出两个前缀和,相减即可题目链接:Luoogu 2461Ac 代码:// luogu-judger-enable-o2#include <cstdio>#include <iostream>#include <algorithm>#include <cstring>...原创 2018-03-29 08:40:43 · 319 阅读 · 0 评论 -
[SDOI2017]序列计数
题目描述:雾。题目分析:f1[i][j]表示任意选i个1~m内的数,和模p为j的方案数,f2[i][j]表示选i个1~m内的不是质数的数,和模p为j的方案数,f1[n][0]-f2[n][0]就是答案,矩阵乘法加速DP就可以了,复杂度O(m+p^3logn) 。题目链接:Ac 代码:#include<cstdio>#include<...原创 2018-03-05 09:14:59 · 177 阅读 · 0 评论 -
[Luogu 省选培训] 子序列
题目描述:给你一串由01组成的串 操作1:将[l,r]中的数取反,即0变为1,1变为0. 操作2:查询从[l,r]这个区间中本质不同的子串个数.题目分析:首先通过DP得到答案 DP[i][0]表示i位置结尾为0的本质不同的子串个数 DP[i][1]表示i位置结尾为1的本质不同的子串个数 当val[i]==0时 DP[i][0]=DP[i-1][0]+DP[i-1][1]...原创 2018-02-22 17:27:47 · 302 阅读 · 0 评论 -
GCD
然后矩阵搞一搞就行啦,不过样例是反的,我认为我错了。。。。。 别点我!#include <cstdio>#include <iostream>#include <cstring>using namespace std;long long ans[2][3];long long x[3][3];long long dx[3][3];const long long p=1e9+7;vo原创 2017-09-20 17:18:35 · 357 阅读 · 0 评论 -
na(斐波那契数列对于的模的周期性)
题目大意:求F(F(N))0<=N<=10E100答案对1e9+7取模这咋求呢,单纯的一个斐波那契数列我们可以用矩阵快速幂来求,但是对于第一层的F(N)我们是需要一个精确值的!咋办? 用到一个性质! 如果我们对斐波那契数列进行取模,那么这个数列就变成了一个周期数列!(不知道周期数列的自己百度) PS:我不会证明,找数学竞赛党吧 但是定理没有给出T与模数的关系。。。。 咋整? 我们可原创 2017-09-24 16:58:38 · 3264 阅读 · 0 评论 -
P2044 随机数生成器
QAQ 递推矩阵:|x[n],1|=|x[n-1],1|*|a,0| |c,1| 但是两个long long 值乘会爆类型,于是把乘的过程分解,在过程中mod m即可AC#include <cstdio>#include <iostream> #include <cstring>#define ll long long using namespace std原创 2017-08-16 21:27:34 · 353 阅读 · 0 评论 -
P1939 【模板】矩阵加速(数列)
传送门 根据题目的意思,还有瞎jb凑,凑出来这个矩阵 |f[n],f[n-1],f[n-2]|=|f[n-1],f[n-2],f[n-3]|*|1,0,1,| |1,0,0| |0,1,0| 还是老套路矩阵快速幂就可以AC辣#include <cstdio>#include <iostream> #include原创 2017-08-16 20:53:49 · 417 阅读 · 0 评论 -
P1349 广义斐波那契数列
QAQ 类似于之前的斐波那契数列,不过这次是广义的。 F(n)=p*F(n-1)+q* F(n-2) 但是数据量太大,还是使用矩阵加速,看一下这次的递推矩阵 |F(n),F(n-1)|=|F(n-1),F(n-2)|*|p,1| |q,0| 套路跟前面的题一样,根据递推矩阵初始化就行了#include <cstdio>#include <iostream>#原创 2017-08-16 16:58:37 · 329 阅读 · 0 评论 -
斐波那契数列(矩阵快速幂)
QAQ 由于n过大,用式子递推会爆类型,也会超时。 |f(n),f(n-1)|=|f(n-1),f(n-2)|*|1,1 0,1|。 上面就是递推式子啦 n的话可以乘(n-2)个的后面的矩阵。 由于矩阵乘法符合交换律。所以可以先让后面的(n-2)的矩阵相乘,最后再乘前面的矩阵。 这样就化成了一个原创 2017-03-31 14:16:14 · 426 阅读 · 0 评论 -
[SDOI2009] HH去散步
题目描述:雾。题目分析:本题由 矩阵乘法路径数问题 转化得来 [HDU 2157] 给一个N个点,M条边的有向无权图,求出两点x,y间长度为t的路径总和(允许重复经过),也就是说,从x出发走t步到y的方案数很明显,你可以考虑dp 设f[i][j][n]表示i出发现在走了n个时刻到j的方案数 a是邻接矩阵f[i][j][n]=∑a[k][j]×f[i][k][n−1]...原创 2018-03-29 08:47:28 · 165 阅读 · 0 评论