链接:https://codeforces.com/contest/1136/problem/C
题意:
给两个矩阵,求能否通过矩阵转置从第一个矩阵变成第二个矩阵。
转置即i变成j。
思路:
因为无论怎么转,只要对角线上的各个值没有改变,即可以。
比赛的时候没想完全,一直把值加起来。。。
代码:
#includeusing namespace std;typedef long long LL;const int MAXN = 500 + 10;int a[MAXN][MAXN];int b[MAXN][MAXN];map 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\n"); else printf("NO\n"); return 0;}