hdu4965---Fast Matrix Calculation(矩阵)
来源:互联网 发布:软件工程项目有哪些 编辑:程序博客网 时间:2024/05/21 21:56
题意:
给一个 NXK的矩阵 A 和 一个 KXN 的矩阵 B 求一个C=(A*B)^(N*N)
得出 矩阵C中每个元素mod6的和
K<=6 N<=1000 n*N<=1e6
思路:
(A*B)为一个NXN的矩阵
我们知道 矩阵乘法是 O(N^3)的复杂度 一次乘法 1e9就快要超时了
但是(B*A)是一个 KXK的矩阵
显然算(B*A)的快速幂是一个正确的方向
(A*B)(N*N)= ABABABABAB.......AB=A*(BABABA.......BA)*B= A*(BA)^(n*n-1)*B
圆满的解决了
#include<bits/stdc++.h>using namespace std;#define N 6struct node{long long a[6][6];};node cheng(node a,node b,int k){node c;memset(c.a,0,sizeof(c.a));for(int i=0;i<k;i++){for(int j=0;j<k;j++)for(int t=0;t<k;t++)c.a[i][j]=(c.a[i][j]+(a.a[i][t]*b.a[t][j])%N)%N;}return c;}long long a[1000][6],b[6][1000],c[1000][6],d[1000][1000];int main(){int n,k,m;node x,y;; while(~scanf("%d%d",&n,&k),n+k) { m=n*n-1; for(int i=0;i<n;i++) for(int j=0;j<k;j++) scanf("%lld",&(a[i][j])); for(int i=0;i<k;i++) for(int j=0;j<n;j++) scanf("%lld",&(b[i][j])); memset(x.a,0,sizeof(x.a)); memset(y.a,0,sizeof(y.a)); memset(c,0,sizeof(c)); memset(d,0,sizeof(d)); for(int i=0;i<k;i++) x.a[i][i]=1; for(int i=0;i<k;i++) for(int j=0;j<k;j++) for(int t=0;t<n;t++) y.a[i][j]=(y.a[i][j]+(b[i][t]*a[t][j])%N)%N; while(m) { if(m&1) x=cheng(x,y,k); y=cheng(y,y,k); m>>=1; } for(int i=0;i<n;i++) for(int j=0;j<k;j++) for(int t=0;t<k;t++) c[i][j]=(c[i][j]+(a[i][t]*x.a[t][j])%N)%N; for(int i=0;i<n;i++) for(int j=0;j<n;j++) for(int t=0;t<k;t++) d[i][j]=(d[i][j]+(c[i][t]*b[t][j])%N)%N; long long ans=0; for(int i=0;i<n;i++) for(int j=0;j<n;j++) ans+=(d[i][j]%N+N)%N; printf("%lld\n",ans); }return 0;}
阅读全文
0 0
- hdu4965---Fast Matrix Calculation(矩阵)
- hdu4965---Fast Matrix Calculation(矩阵)
- HDU4965-Fast Matrix Calculation(矩阵快速幂)
- HDU4965 Fast Matrix Calculation【矩阵快速幂】
- hdu4965---Fast Matrix Calculation (矩阵交结合律)(快速幂)
- hdu4965——Fast Matrix Calculation(快速矩阵幂优化)
- hdu 4965 Fast Matrix Calculation 矩阵乘法
- HDU 4965 Fast Matrix Calculation 【矩阵】
- hdu 4965 Fast Matrix Calculation 矩阵
- 【矩阵快速幂+矩阵运算性质】Fast Matrix Calculation HDU
- Fast Matrix Calculation HDU
- Fast Matrix Calculation HDU
- 【HDU】4965 Fast Matrix Calculation 矩阵快速幂
- HDU 4965 Fast Matrix Calculation 矩阵快速幂
- HDU 4965 Fast Matrix Calculation 矩阵快速幂
- hdu 4965 Fast Matrix Calculation (多校第9场 矩阵)
- HDU 4965 Fast Matrix Calculation(矩阵快速幂)
- hdu 4965 Fast Matrix Calculation【矩阵快速幂】
- 【Linux应用开发】之守护进程
- 遇到问题---MongoDB---配置多数据源报错expected single matching bean but found 2
- JVM之几种垃圾收集器简单介绍
- SQLException: Incorrect string value: '\xF0\x9F\x91\x8D\xF0\x9F...'
- hdu4135 容斥
- hdu4965---Fast Matrix Calculation(矩阵)
- HDU6118 度度熊的交易计划 【费用流】
- 康托展开
- Linux 常用基本命令 用户组
- Spring框架学习笔记03
- 2017.8.13(Map集合的总结)
- 粒子 Particle System 报错
- .Net 中DataSet和DataTable的 区别与联系
- 3、Redis系统管理