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;
}
相關文章
- HDU4920 Matrix multiplication (CPU cache對程式的影響)
- 矩陣相乘矩陣
- HDU 4965 Fast Matrix Calculation(矩陣快速冪)AST矩陣
- OpenMP版本矩陣相乘矩陣
- 【矩陣乘法】Matrix Power Series矩陣
- 資料結構:陣列,稀疏矩陣,矩陣的壓縮。應用:矩陣的轉置,矩陣相乘資料結構陣列矩陣
- Cellular Matrix 蜂窩矩陣(一)矩陣
- goldengate 認證矩陣matrixGo矩陣
- python兩個三階矩陣相乘Python矩陣
- Hadoop 2.6 使用Map Reduce實現矩陣相乘1 矩陣轉置Hadoop矩陣
- hdu 1757 矩陣連乘矩陣
- Spark Distributed matrix 分散式矩陣Spark分散式矩陣
- LeetCode-Sparse Matrix MultiplicationLeetCode
- Python Numpy的陣列array和矩陣matrixPython陣列矩陣
- [CareerCup] 1.7 Set Matrix Zeroes 矩陣賦零矩陣
- (原創)一般矩陣 Matrix類矩陣
- HDU4565 So Easy! (矩陣)矩陣
- 旋轉矩陣(Rotate Matrix)的性質分析矩陣
- 矩陣相乘優化演算法實現講解矩陣優化演算法
- HDU 1005 Number Sequence(矩陣)矩陣
- HDU 1575 Tr A(矩陣快速冪)矩陣
- HDU 4565 So Easy!(矩陣快速冪)矩陣
- HDU 2254 奧運(數論+矩陣)矩陣
- HDU 4686 (推公式+矩陣快速冪)公式矩陣
- ZOJ Problem Set - 1094 Matrix Chain MultiplicationAI
- HDU 4951 Multiplication table(找規律)
- R的矩陣相乘/逆矩陣,小禮物和美食 - 2013.06.06小計矩陣
- flutter佈局-5-Matrix4矩陣變換Flutter矩陣
- HDU 4686 Arc of Dream(矩陣加速遞推)矩陣
- 例題6-3 Matrix Chain Multiplication ,Uva 442AI
- HDU 3059 Fibonacci數列與矩陣求和 矩陣大小不固定矩陣
- 動手畫混淆矩陣(Confusion Matrix)(含程式碼)矩陣
- 張量(Tensor)、標量(scalar)、向量(vector)、矩陣(matrix)矩陣
- POJ 3233 Matrix Power Series(矩陣+二分)矩陣
- HDU 2157 How many ways?? (矩陣快速冪)矩陣
- HDU 1005 Number Sequence(矩陣快速冪)矩陣
- HDU 2256Problem of Precision(矩陣快速冪)矩陣
- HDU 1575 Tr A【矩陣快速冪取模】矩陣