80pts 求助
  • 板块P1275 魔板
  • 楼主5793__qwq
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/6/10 22:23
  • 上次更新2023/10/23 13:25:33
查看原帖
80pts 求助
464001
5793__qwq楼主2023/6/10 22:23
#include<bits/stdc++.h>
using namespace std;
int t,n,m,f;
bitset<101> a[101];
bitset<101> ans[101];
bool check(int x){
	bitset<101> v=0,u=0;
	swap(a[1],a[x]);
	for(int j=1;j<=n;++j){
		if(a[1][j]!=ans[1][j]){
			for(int i=1;i<=m;++i)
				a[i].flip(j);
			v[j]=1;
		}
	}
	for(int i=2;i<=m;++i)
		for(int j=2;j<=m;++j)
			if(a[j]==ans[i]&&u[i]==0){
				u[i]=1;
				break;
			}
	
	for(int j=1;j<=n;++j)
		if(v[j])
			for(int i=1;i<=m;++i)
				a[i].flip(j);
	swap(a[1],a[x]);
	for(int i=2;i<=m;++i)
		if(!u[i])return 0;
	return 1;
}
int main(){
	cin>>t;
	while(t--){
		for(int i=1;i<=n;++i)
			for(int j=1;j<=m;++j)
				a[i]=0,ans[i]=0;
		cin>>n>>m;
		for(int i=1;i<=n;++i)
			for(int j=1;j<=m;++j)
				cin>>f,a[j][i]=f;
		for(int i=1;i<=n;++i)
			for(int j=1;j<=m;++j)
				cin>>f,ans[j][i]=f;
		int s=0;
		for(int i=1;i<=m;++i)
			s+=check(i);
		if(s)
			puts("YES");else
			puts("NO");
	}
	return 0;
}

80pts求助

2023/6/10 22:23
加载中...