链接:https://codeforces.com/contest/1136/problem/C
题意:
给两个矩阵,求能否通过矩阵转置从第一个矩阵变成第二个矩阵。
转置即i变成j。
思路:
因为无论怎么转,只要对角线上的各个值没有改变,即可以。
比赛的时候没想完全,一直把值加起来。。。
代码:
#include <bits/stdc++.h> using namespace std; typedef long long LL; const int MAXN = 500 + 10; int a[MAXN][MAXN]; int b[MAXN][MAXN]; map<int, int> times[2 * MAXN]; int main() { int n, m; int flag = 1; scanf("%d%d", &n, &m); for (int i = 1;i <= n;i++) { for (int j = 1; j <= m; j++) { scanf("%d", &a[i][j]); times[i + j - 1][a[i][j]]++; } } for (int i = 1;i <= n;i++) { for (int j = 1; j <= m; j++) { scanf("%d", &b[i][j]); if (times[i + j - 1][b[i][j]] <= 0) flag = 0; times[i + j - 1][b[i][j]]--; } } if (flag) printf("YES "); else printf("NO "); return 0; }