杭州网站建设杭州,深圳网站建设网页制作,wordpress文章关闭缩略图,互联网营销师有什么用传送门 大体题意#xff1a;给定两个矩阵a和b#xff0c;给定一个操作#xff0c;这个操作可以将a矩阵任意一行或者任意一列取反#xff0c;问能否将a变成b。
乍一看不是一个很难的题#xff0c;但是想我这样思维不好的还是看不出来什么东西。让后看到了题解前几句话 “ …传送门 大体题意给定两个矩阵a和b给定一个操作这个操作可以将a矩阵任意一行或者任意一列取反问能否将a变成b。
乍一看不是一个很难的题但是想我这样思维不好的还是看不出来什么东西。让后看到了题解前几句话 “ 固定第一行 ” 瞬间就有了思路。我们可以想想如果我们把a通过列变换将第一行变成一样的那么其他行必须通过行变换不然就会改变第一列已经相等的值。这样只需要检查除了第一行之外的每一行能否通过异或一行使得a变成b那么就比较简单啦。
//#pragma GCC optimize(2)
#includecstdio
#includeiostream
#includestring
#includecstring
#includemap
#includecmath
#includecctype
#includevector
#includeset
#includequeue
#includealgorithm
#includesstream
#includectime
#includecstdlib
#define X first
#define Y second
#define L (u1)
#define R (u1|1)
#define pb push_back
#define mk make_pair
#define Mid (tr[u].ltr[u].r1)
#define Len(u) (tr[u].r-tr[u].l1)
#define random(a,b) ((a)rand()%((b)-(a)1))
#define db puts(---)
using namespace std;//void rd_cre() { freopen(d://dp//data.txt,w,stdout); srand(time(NULL)); }
//void rd_ac() { freopen(d://dp//data.txt,r,stdin); freopen(d://dp//AC.txt,w,stdout); }
//void rd_wa() { freopen(d://dp//data.txt,r,stdin); freopen(d://dp//WA.txt,w,stdout); }typedef long long LL;
typedef unsigned long long ULL;
typedef pairint,int PII;const int N1010,mod1e97,INF0x3f3f3f3f;
const double eps1e-6;int n;
int a[N][N],b[N][N];bool check()
{for(int i1;in;i){if(a[1][i]b[1][i]) continue;for(int j1;jn;j) a[j][i]^1;}for(int i2;in;i){int fa[i][1]^b[i][1];for(int j1;jn;j) if(a[i][j]^b[i][j]!f) return false;}return true;
}int main()
{
// ios::sync_with_stdio(false);
// cin.tie(0);int _; scanf(%d,_);while(_--){scanf(%d,n);for(int i1;in;i) for(int j1;jn;j) scanf(%1d,a[i][j]);for(int i1;in;i) for(int j1;jn;j) scanf(%1d,b[i][j]);if(check()) puts(YES); else puts(NO);}return 0;
}
/**/