
对于 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