矩阵乘法
文章平均质量分 56
Miao_zc
膜Hz
展开
-
bzoj4037: [HAOI2015]Str
#include #include #include #define mo 998244353 #define ll long long using namespace std; int n,m,s[1005];char c[1005]; struct Matrix{ll M[7][7];}X,k[15][1005],dp[1005],t; Matrix operator*(Matrix a,Ma原创 2016-03-18 17:00:58 · 748 阅读 · 0 评论 -
bzoj2326: [HNOI2011]数学作业
一开始一直不理解矩阵乘法是什么东西。。。现在有一点自己的想法。 对于如f(i+1)=a*f(i)+b,可以构造一个矩阵b,使矩阵a[i]*矩阵b=矩阵a[i+1]。然后利用矩阵快速幂加速。 这道题对于不同的位数有不同的递推式。设位数为k,f[i+1]=10^k*f[i]+i+1,可构造3*3的矩阵:10^k,1,1 0,1,1 0,0,1(好像不太对。。。)。 #include原创 2016-03-14 11:17:44 · 442 阅读 · 0 评论 -
bzoj3240: [Noi2013]矩阵游戏
看题目名:矩阵乘法。。。 有公式:x^a=x^(a%phi(p)+phi(p)) (mod p) 因为np,mp互质,可令n=n%phi(p),m=m%(phi(p)). 同一行内可构造矩阵A,设F[i][1]*A'=F[i][m]。 行末到下一行首可构造矩阵B,F[i][1]*B'=F[i+1][1]。 可求得Ans。 #include #include #include原创 2016-03-19 16:45:58 · 702 阅读 · 0 评论 -
bzoj1875: [SDOI2009]HH去散步
又一道矩阵乘法加速的题目。看到N ≤ 20,M ≤ 60,t ≤ 2^30的数据范围,很容易想到用矩阵乘法。本题不能立刻走回头路,所以可以以边为状态,把无向边拆成2条有向边a[i]表示目前在第i条边终点,b[i][j]表示第i条边是否接着j,先把起点为A的a[1]=1,然后a*b^t。统计终点为B的a[i]值。别忘%。。。 #include #include #define S 200 usin原创 2016-03-14 17:41:03 · 700 阅读 · 0 评论