yi_hr
2025-01-10 15:47:18
要判断是否可以通过行翻转和列翻转将矩阵
首先计算矩阵
假设第一行不进行翻转(即
对于每一行,计算翻转状态
#include <bits/stdc++.h>
#define ll long long
using namespace std;
int main(){
ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
int n,m;
cin>>n>>m;
vector<vector<int>> A(n,vector<int>(m)),B(n, vector<int>(m));
for(auto &row:A){
for(auto &x:row){
cin>>x;
}
}
for(auto &row:B){
for(auto &x:row){
cin >> x;
}
}
vector<vector<int>> D(n, vector<int>(m, 0));
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
D[i][j] = A[i][j] ^ B[i][j];
}
}
for(int r0=0;r0<=1;r0++){
vector<int> c(m, 0);
for(int j=0;j<m;j++){
c[j]=D[0][j]^r0;
}
bool ok=1;
vector<int> r(n, 0);
r[0]=r0;
for(int i=1;i<n;i++){
r[i] = D[i][0]^c[0];
for(int j=1;j<m;j++) {
if((D[i][j]^c[j]) != r[i] ){
ok=0;
break;
}
}
if(!ok) break;
}
if(ok){
cout<<"Koyi";
return 0;
}
}
cout<<"Budexing";
}