C. Nastya Is Transposing Matrices
Posted mch5201314
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C. Nastya Is Transposing Matrices相关的知识,希望对你有一定的参考价值。
链接
[https://codeforces.com/contest/1136/problem/C]
题意
给你两个规模一样的矩阵
问是否可以通过不断选取A矩阵的子“方正”转置得到B矩阵
分析
明确一点,那些i+j相等的位置一定是在某个子方正的斜对角上(右上往左下画线就知道),
而且这个斜对角的任意两个元素是一定可以通过一些转置互换,而且其他位置不变。
自己拿几个矩阵模拟就知道了
后面只需要对每个i+j相等的排序对比两个矩阵的就OK了
代码
#include<bits/stdc++.h>
using namespace std;
#define ll long long
int main(){
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
//freopen("in.txt","r",stdin);
int n,m;
while(cin>>n>>m){
vector<int> v1[2*510],v2[2*510];
int x;
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
{
cin>>x;
v1[i+j].push_back(x);
}
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
{
cin>>x;
v2[i+j].push_back(x);
}
for(int i=0;i<m+n;i++)
{
sort(v1[i].begin(),v1[i].end());
sort(v2[i].begin(),v2[i].end());
}
bool flag=1;
for(int i=0;i<m+n;i++)
if(v1[i]!=v2[i]){
flag=0;
break;
}
if(flag) cout<<"YES
";
else cout<<"NO
";
}
return 0;
}
以上是关于C. Nastya Is Transposing Matrices的主要内容,如果未能解决你的问题,请参考以下文章
SPOJ419Transposing is Fun Pólya定理+欧拉函数
Codeforces Round #637 (Div. 2) C. Nastya and Strange Generator 思维(题意杀
[CF1136D] Nastya Is Buying Lunch - 贪心
CF1136D Nastya Is Buying Lunch 贪心