[BZOJ4128]Matrix(BSGS+矩乘)
来源:互联网 发布:能赚集分宝的软件 编辑:程序博客网 时间:2024/05/16 06:23
题目描述
传送门
题目大意:给出矩阵AB和模数p,求最小的正整数x,满足
题解
裸的BSGS,直接换成矩阵乘法就好了
注意map里放结构体的话要重载一下<和==
代码
#include<algorithm>#include<iostream>#include<cstring>#include<cstdio>#include<cmath>#include<map>using namespace std;#define N 75struct data{ int a[N][N]; bool operator == (const data &b) const { for (int i=1;i<=70;++i) for (int j=1;j<=70;++j) if (a[i][j]!=b.a[i][j]) return 0; return 1; } bool operator < (const data &b) const { for (int i=1;i<=70;++i) for (int j=1;j<=70;++j) { if (a[i][j]<b.a[i][j]) return 1; if (a[i][j]>b.a[i][j]) return 0; } return 0; }}zero,unit,A,B,A_m;int n,ans,m,p;map <data,int> hash;data cheng(data a,data b){ data ans=zero; for (int k=1;k<=n;++k) for (int i=1;i<=n;++i) for (int j=1;j<=n;++j) ans.a[i][j]=(ans.a[i][j]+a.a[i][k]*b.a[k][j]%p)%p; return ans;}data fast_pow(data a,int p){ data ans=unit; for (;p;p>>=1,a=cheng(a,a)) if (p&1) ans=cheng(ans,a); return ans;}int main(){ scanf("%d%d",&n,&p); for (int i=1;i<=n;++i) unit.a[i][i]=1; for (int i=1;i<=n;++i) for (int j=1;j<=n;++j) scanf("%d",&A.a[i][j]); for (int i=1;i<=n;++i) for (int j=1;j<=n;++j) scanf("%d",&B.a[i][j]); m=ceil(sqrt(p)); A_m=fast_pow(A,m); data mi=B; hash[mi]=1; for (int i=1;i<=m;++i) { mi=cheng(mi,A); hash[mi]=i+1; } mi=unit; for (int i=1;i<=m;++i) { mi=cheng(mi,A_m); if (hash[mi]) { ans=i*m-hash[mi]+1; break; } } printf("%d\n",ans);}
0 0
- [BZOJ4128]Matrix(BSGS+矩乘)
- bzoj4128 Matrix BSGS&hash
- BZOJ4128: Matrix 矩阵BSGS
- bzoj4128 Matrix
- 登月计划 (BSGS 快速乘)
- 【BZOJ4128】Matrix,拔山盖世的矩阵乘法+随机化
- BZOJ 4128 Matrix BSGS+矩阵求逆
- BZOJ_P4128 Matrix(矩阵乘法+快速幂+BSGS)
- [BSGS 矩阵 随机化] BZOJ 4128 Matrix
- bzoj 4128: Matrix BSGS+矩阵乘法
- BZOJ 4128: Matrix BSGS 矩阵乘法
- UVa442 Matrix Chain Multiplication(矩阵链乘)
- UVa442 Matrix Chain Multiplication(矩阵链乘)java实现
- 一道ZHX的题 O (1) 快速乘 BSGS
- bsgs(数论)
- BSGS
- poj3243:Clever Y(BSGS)
- 【bzoj2875】随机数生成器(矩乘快速幂+快速乘)
- 纯java语言分析网站后台日志IP排序处理
- libsvm3.22——在matlab(32位和64位)中的安装
- Deep Learning---py-faster-rcnn基于PASCAL VOC数据集训练模型
- Eclipse中将Java项目转换成Web项目的方法
- ubuntu下安装Google谷歌浏览器(64位系统)
- [BZOJ4128]Matrix(BSGS+矩乘)
- APUE获取网卡ip字段以及文本切割命令的使用
- 一维数组的地址
- Nuttx 字符设备驱动
- 5秒钟清除word页眉下边的横线
- Unity之AssetBundle的实际应用
- LeetCode126 Word Ladder II
- LeetCode125 Valid Palindrome
- LeetCode124 Binary Tree Maximum Path Sum