BZOJ_4128_Matrix_矩阵乘法+哈希+BSGS
BZOJ_4128_Matrix_矩阵乘法+哈希+BSGS
Description
给定矩阵A,B和模数p,求最小的x满足 A^x = B (mod p)
Input
Output
Sample Input
1 1
1 0
5 3
3 2
Sample Output
HINT
把矩阵哈希,然后把它当成一个数一样做BSGS。
#include <stdio.h>
#include <string.h>
#include <algorithm>
#include <math.h>
#include <map>
using namespace std;
typedef unsigned long long ull;
ull base=13131;
int n,p;
map<ull,int>f;
struct Mat {
ull v[75][75],val;
Mat(){memset(v,0,sizeof(v)); val=0;}
Mat operator*(const Mat &x) const {
Mat re;int i,j,k;
for(i=1;i<=n;i++) {
for(j=1;j<=n;j++) {
for(k=1;k<=n;k++) {
(re.v[i][j]+=v[i][k]*x.v[k][j])%=p;
}
}
}
return re;
}
void hh() {
int i,j;
for(i=1;i<=n;i++) {
for(j=1;j<=n;j++) {
val=val*base+v[i][j];
}
}
}
}A,B;
int main() {
scanf("%d%d",&n,&p);
int i,m=(int)ceil(sqrt(p)),j;
for(i=1;i<=n;i++) for(j=1;j<=n;j++) scanf("%llu",&A.v[i][j]);
for(i=1;i<=n;i++) for(j=1;j<=n;j++) scanf("%llu",&B.v[i][j]);
A.hh(); B.hh();
Mat I;
for(i=1;i<=m;i++) {
B=B*A;
B.hh();
f[B.val]=i;
}
Mat D;for(i=1;i<=n;i++) D.v[i][i]=1;
for(i=1;i<=m;i++) D=D*A;
for(i=1;i<=n;i++) I.v[i][i]=1;
for(i=1;i<=m;i++) {
I=I*D;
I.hh();
ull tmp=I.val;
if(f.count(tmp)) {
printf("%d\n",i*m-f[tmp]);return 0;
}
}
}
BZOJ_4128_Matrix_矩阵乘法+哈希+BSGS的更多相关文章
- Codeforces 1106F Lunar New Year and a Recursive Sequence | BSGS/exgcd/矩阵乘法
我诈尸啦! 高三退役选手好不容易抛弃天利和金考卷打场CF,结果打得和shi一样--还因为queue太长而unrated了!一个学期不敲代码实在是忘干净了-- 没分该没分,考题还是要订正的 =v= 欢迎 ...
- 【bzoj4128】Matrix 矩阵乘法+Hash+BSGS
题目描述 给定矩阵A,B和模数p,求最小的x满足 A^x = B (mod p) 输入 第一行两个整数n和p,表示矩阵的阶和模数,接下来一个n * n的矩阵A.接下来一个n * n的矩阵B 输出 输出 ...
- *HDU2254 矩阵乘法
奥运 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submissi ...
- *HDU 1757 矩阵乘法
A Simple Math Problem Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Ot ...
- CH Round #30 摆花[矩阵乘法]
摆花 CH Round #30 - 清明欢乐赛 背景及描述 艺术馆门前将摆出许多花,一共有n个位置排成一排,每个位置可以摆花也可以不摆花.有些花如果摆在相邻的位置(隔着一个空的位置不算相邻),就不好看 ...
- POJ3070 Fibonacci[矩阵乘法]
Fibonacci Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 13677 Accepted: 9697 Descri ...
- bzoj 2738 矩阵乘法
其实这题跟矩阵乘法没有任何卵关系,直接整体二分,用二维树状数组维护(刚刚学会>_<),复杂度好像有点爆炸(好像有十几亿不知道是不是算错了),但我们不能怂啊23333. #include&l ...
- 【BZOJ-2476】战场的数目 矩阵乘法 + 递推
2476: 战场的数目 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 58 Solved: 38[Submit][Status][Discuss] D ...
- 【BZOJ-1898】Swamp 沼泽鳄鱼 矩阵乘法
1898: [Zjoi2005]Swamp 沼泽鳄鱼 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 1012 Solved: 566[Submit][S ...
随机推荐
- IT轮子系列(六)——Excel上传与解析,一套代码解决所有Excel业务上传,你Get到了吗
前言 在日常开发当中,excel的上传与解析是很常见的.根据业务不同,解析的数据模型也都不一样.不同的数据模型也就需要不同的校验逻辑,这往往需要写多套的代码进行字段的检验,如必填项,数据格式.为了避免 ...
- iBATIS 深入分析
深入分析 iBATIS 框架之系统架构与映射原理 分类: IBATIS2010-11-24 03:32 547人阅读 评论(1) 收藏 举报 ibatis框架sql数据库jdbcjava 本文转至ht ...
- [ASP.NET MVC4高级编程] 学习记录(一)
理论: 先有GUI在发展,当用户按下某个键,某个进程会监听到这个动作,这个进程就是控制器.这就是MVC模式. 后来有了事件驱动编程,响应动作的是按钮本身,而不是控制器. 再后来webForm中,事件驱 ...
- windows下编译安装BOOST
boost的编译和使用,经过搜集资料和总结,记录成文.感谢文后所列参考资料的作者. 1 下载 地址:http://sourceforge.net/projects/boost/files/boost/ ...
- git如何移除某文件夹的版本控制
目录结构如下 project bin lib src ...... 执行如下的操作 git add . git commit -m "add bin/ lib/ src/" git ...
- Opencv3.1+python2.7的CentOS7安装
http://blog.csdn.NET/daunxx/article/details/50506625 转载注释:有些包名和系统包名并不匹配,yum install 找不到的时候,可以yum sea ...
- SOFA 源码分析 — 自动故障剔除
前言 集群中通常一个服务有多个服务提供者.其中部分服务提供者可能由于网络,配置,长时间 fullgc ,线程池满,硬件故障等导致长连接还存活但是程序已经无法正常响应.单机故障剔除功能会将这部分异常的服 ...
- Windows远程桌面连接 出现身份错误 要求的函数不受支持
原因 CVE-2018-0886 的 CredSSP 更新 将默认设置从"易受攻击"更改为"缓解"的更新. ## 官方更新 摘要 凭据安全支持提供程序协议 (C ...
- 转载 Elasticsearch开发环境搭建(Eclipse\MyEclipse + Maven)
概要: 1.使用Eclipse搭建Elasticsearch详情参考下面链接 2.Java Elasticsearch 配置 3.ElasticSearch Java Api(一) -添加数据创建索引 ...
- Spring结合log4j(slf4j)
maven依赖 <!-- slf4j (级联:log4j/slf4j-api) --> <dependency> <groupId> ...