码迷,mamicode.com
首页 > 其他好文 > 详细

C. Nastya Is Transposing Matrices

时间:2019-03-12 18:24:45      阅读:168      评论:0      收藏:0      [点我收藏+]

标签:题意   flag   ble   代码   lag   mes   i++   链接   fine   

链接

[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\n";
            else cout<<"NO\n";
    }
    return 0;
} 

C. Nastya Is Transposing Matrices

标签:题意   flag   ble   代码   lag   mes   i++   链接   fine   

原文地址:https://www.cnblogs.com/mch5201314/p/10518296.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!