Codeforces Round #546 (Div. 2) C. Nastya Is Transposing Matrices

链接: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;
}