

对于 20%的数据,满足 N=M≤20;
对于 40%的数据,满足 N=M≤500;
对于 70%的数据,满足 N≤500,M≤1,000;
对于 100%的数据,满足 N≤1,000,M≤2,000。
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<bitset>
#define MAXN 1010
using namespace std;
int n,m;
bitset<MAXN> a[MAXN<<1];
inline int read(){
int date=0,w=1;char c=0;
while(c<‘0‘||c>‘9‘){if(c==‘-‘)w=-1;c=getchar();}
while(c>=‘0‘&&c<=‘9‘){date=date*10+c-‘0‘;c=getchar();}
return date*w;
}
void work(){
int ans=0;
for(int i=1;i<=n;i++){
int k=i;
while(k<=m&&!a[k][i])k++;
if(k==m+1){
printf("Cannot Determine\n");
return;
}
ans=max(ans,k);
if(k!=i)swap(a[k],a[i]);
for(int j=1;j<=m;j++){
if(i==j||!a[j][i])continue;
a[j]^=a[i];
}
}
printf("%d\n",ans);
for(int i=1;i<=n;i++){
if(a[i][n+1])printf("?y7M#\n");
else printf("Earth\n");
}
}
void init(){
char ch[MAXN];
n=read();m=read();
for(int i=1;i<=m;i++){
scanf("%s",ch+1);
for(int j=1;j<=n;j++)a[i][j]=ch[j]-‘0‘;
a[i][n+1]=read();
}
}
int main(){
init();
work();
return 0;
}
原文:https://www.cnblogs.com/Yangrui-Blog/p/9534348.html