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 贪心

Codeforces Round #546 (Div. 2)-D - Nastya Is Buying Lunch

Codeforces Round #546 (Div. 2) D. Nastya Is Buying Lunch