题目
传送门:QWQ
分析
高斯消元解异或方程组,和解普通方程组差不多。
范围有点大,要套一个bitset。
代码
#include <bits/stdc++.h>
using namespace std;
const int maxn = ;
bitset<maxn> a[maxn*];
int n, m, b[maxn*], ans=;
void Gauss() {
for(int i=;i<=n;i++) {
int flag=;
for(int j=i;j<=m;j++)
if(a[j][i]!=) {
swap(a[i],a[j]);
swap(b[i],b[j]); flag=;
ans = max(ans, j); break;
}
if(flag) {
puts("Cannot Determine"); return;
}
for(int j=;j<=m;j++) {
if(i==j) continue;
if(a[j][i]) {
a[j]^=a[i]; b[j]^=b[i];
}
}
}
printf("%d\n", ans);
for(int i=;i<=n;i++)
if(b[i]) printf("?y7M#\n");
else printf("Earth\n");
}
int main() {
int q=;
scanf("%d%d",&n,&m);
for(int i=;i<=m;i++) {
for(int j=;j<=n;j++) {
scanf("%1d",&q);
a[i][j]=q;
}
scanf("%d",&b[i]);
}
Gauss();
}