题目链接:http://codeforces.com/contest/1136/problem/C
题意:给你A,B两个矩阵,如果A矩阵通过行列变换可以转化成B矩阵就输出YES,否则输出NO。
思路:通过观察可以发现,如果A矩阵可以转化成B矩阵,那么A矩阵所有的副对角线排序后一定和B矩阵的副对角线相等。
#include <bits/stdc++.h>
using namespace std;
#define IOS ios_base::sync_with_stdio(0);cin.tie(0);
const int N = 501;
int n, m, x, f;
multiset <int> sa[N+N],sb[N+N];
int main()
{
IOS; cin >> n >> m;
for(int i = 0; i < n; i++)
for(int j = 0; j < m; j++)
cin >> x, sa[i+j].insert(x);
for(int i = 0; i < n; i++)
for(int j = 0; j < m; j++)
cin >> x, sb[i+j].insert(x);
for(int i = 0; i < n + m; i++)
f |= sa[i] != sb[i];
cout << (f ? "NO" : "YES") << endl;
}