HDU 4920 Matrix multiplication(矩陣相乘)
各種TEL,233啊。沒想到是處理掉0的情況就可以過啊。一直以為會有極端資料。沒想到竟然是這樣的啊、、在網上看到了一個AC的神奇的程式碼,經典的矩陣乘法,只不過把最內層的列舉,移到外面就過了啊、、、有點不理解啊,複雜度不是一樣的嗎、、
Matrix multiplication
Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Total Submission(s): 640 Accepted Submission(s): 250
Problem Description
Given two matrices A and B of size n×n, find the product of them.
bobo hates big integers. So you are only asked to find the result modulo 3.
bobo hates big integers. So you are only asked to find the result modulo 3.
Input
The input consists of several tests. For each tests:
The first line contains n (1≤n≤800). Each of the following n lines contain n integers -- the description of the matrix A. The j-th integer in the i-th line equals Aij. The next n lines describe the matrix B in similar format (0≤Aij,Bij≤109).
The first line contains n (1≤n≤800). Each of the following n lines contain n integers -- the description of the matrix A. The j-th integer in the i-th line equals Aij. The next n lines describe the matrix B in similar format (0≤Aij,Bij≤109).
Output
For each tests:
Print n lines. Each of them contain n integers -- the matrix A×B in similar format.
Print n lines. Each of them contain n integers -- the matrix A×B in similar format.
Sample Input
1
0
1
2
0 1
2 3
4 5
6 7
Sample Output
0
0 1
2 1
Author
Xiaoxu Guo (ftiasch)
Source
#include <algorithm>
#include <iostream>
#include <stdlib.h>
#include <string.h>
#include <iomanip>
#include <stdio.h>
#include <string>
#include <queue>
#include <cmath>
#include <stack>
#include <map>
#include <set>
#define eps 1e-12
///#define M 1000100
#define LL __int64
///#define LL long long
///#define INF 0x7ffffff
#define INF 0x3f3f3f3f
#define PI 3.1415926535898
#define zero(x) ((fabs(x)<eps)?0:x)
using namespace std;
const int maxn = 810;
int a[maxn][maxn];
int b[maxn][maxn];
int c[maxn][maxn];
int aa[maxn][maxn];
int bb[maxn][maxn];
int main()
{
int n;
while(cin >>n)
{
memset(c, 0, sizeof(c));
memset(aa, 0, sizeof(aa));
memset(bb, 0, sizeof(bb));
for(int i = 1; i <= n; i++)
{
for(int j = 1; j <= n; j++)
{
scanf("%d",&a[i][j]);
a[i][j] %= 3;
}
}
for(int i = 1; i <= n; i++)
{
for(int j = 1; j <= n; j++)
{
scanf("%d",&b[i][j]);
b[i][j] %= 3;
}
}
for(int i = 1; i <= n; i++)
{
int x = -1;
for(int j = n; j >= 0; j--)
{
aa[i][j] = x;
if(a[i][j]) x = j;
}
}
for(int i = 1; i <= n; i++)
{
int x = -1;
for(int j = n; j >= 0; j--)
{
bb[i][j] = x;
if(b[i][j]) x = j;
}
}
for (int i = 1; i <= n; i++)
{
for(int j = aa[i][0]; j != -1; j = aa[i][j])
{
for(int k = bb[j][0]; k != -1; k = bb[j][k])
c[i][k] += a[i][j]*b[j][k];
}
}
for(int i = 1; i <= n; i++)
{
for(int j = 1; j <= n-1; j++)
printf("%d ",c[i][j]%3);
printf("%d\n",c[i][n]%3);
}
}
return 0;
}
這是看到有人交的AC的程式碼:
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
const int N = 805;
int a[N][N], b[N][N], ans[N][N];
int main()
{
int n, i, j, k;
while(~scanf("%d",&n))
{
for(i = 1; i <= n; i++)
for(j = 1; j <= n; j++)
{
scanf("%d",&a[i][j]);
a[i][j] %= 3;
}
for(i = 1; i <= n; i++)
for(j = 1; j <= n; j++)
{
scanf("%d",&b[i][j]);
b[i][j] %= 3;
}
memset(ans, 0, sizeof(ans));
for(k = 1; k <= n; k++) //經典演算法中這層迴圈在最內層,放最內層會超時,但是放在最外層或者中間都不會超時,不知道為什麼
for(i = 1; i <= n; i++)
for(j = 1; j <= n; j++)
{
ans[i][j] += a[i][k] * b[k][j];
//ans[i][j] %= 3; //如果在這裡對3取餘,就超時了
}
for(i = 1; i <= n; i++)
{
for(j = 1; j < n; j++)
printf("%d ", ans[i][j] % 3);
printf("%d\n", ans[i][n] % 3);
}
}
return 0;
}
相關文章
- 矩陣相乘矩陣
- 【矩陣乘法】Matrix Power Series矩陣
- python兩個三階矩陣相乘Python矩陣
- Cellular Matrix 蜂窩矩陣(一)矩陣
- 資料結構:陣列,稀疏矩陣,矩陣的壓縮。應用:矩陣的轉置,矩陣相乘資料結構陣列矩陣
- HDU 1005 Number Sequence(矩陣快速冪)矩陣
- HDU 2157 How many ways?? (矩陣快速冪)矩陣
- HDU 2256Problem of Precision(矩陣快速冪)矩陣
- 張量(Tensor)、標量(scalar)、向量(vector)、矩陣(matrix)矩陣
- 動手畫混淆矩陣(Confusion Matrix)(含程式碼)矩陣
- flutter佈局-5-Matrix4矩陣變換Flutter矩陣
- HDU 2276 - Kiki & Little Kiki 2 (矩陣快速冪)矩陣
- numpy 中 array 和 matrix 相乘的結果比較
- 非科班程式設計師才不知道的矩陣Matrix程式設計師矩陣
- bzoj4547: Hdu5171 小奇的集合(矩陣乘法)矩陣
- SciTech-Matrix Analysis of Management+Theory-管理科學的“矩陣式分析”矩陣
- POJ 3233 Matrix Power Series (矩陣快速冪+等比數列二分求和)矩陣
- 巨大的矩陣(矩陣加速)矩陣
- 鄰接矩陣、度矩陣矩陣
- 奇異矩陣,非奇異矩陣,偽逆矩陣矩陣
- 矩陣矩陣
- 求任意矩陣的伴隨矩陣矩陣
- HDU 4549 M斐波那契數列(矩陣快速冪+費馬小定理)矩陣
- 矩陣和陣列矩陣陣列
- 矩陣乘法矩陣
- 螺旋矩陣矩陣
- 8.6 矩陣?矩陣
- 找矩陣矩陣
- 海浪矩陣矩陣
- 稀疏矩陣矩陣
- 矩陣分解矩陣
- 理解矩陣矩陣
- 快手矩陣管理平臺,矩陣管理有方法矩陣
- 機器學習中的矩陣向量求導(五) 矩陣對矩陣的求導機器學習矩陣求導
- [6 kyu] Multiplication table
- 演算法學習:矩陣快速冪/矩陣加速演算法矩陣
- 矩陣:如何使用矩陣操作進行 PageRank 計算?矩陣
- 矩陣求逆矩陣
- 雅可比矩陣矩陣