【bzoj1923】外星千足虫
这个gauss消元有点naive啊。
由于只有01,位操作显然是方便的多。
那么用bitset代替之前的增广矩阵就行了。
#include<bits/stdc++.h> #define N 1005 using namespace std; int n,m,ans; char s[N]; bitset<N> a[2*N]; bool gauss(){ int now=0; for(int i=1;i<=n;i++){ int j=now+1; while(!a[j][i]&&j<=m)++j; if(j==m+1){ans=-1;return 0;} else ans=max(ans,j); ++now;swap(a[j],a[now]); for(int k=1;k<=m;k++) if(k!=now&&a[k][i])a[k]^=a[now]; } } inline int read(){ int f=1,x=0;char ch; do{ch=getchar();if(ch=='-')f=-1;}while(ch<'0'||ch>'9'); do{x=x*10+ch-'0';ch=getchar();}while(ch>='0'&&ch<='9'); return f*x; } int main(){ n=read();m=read(); for(int i=1;i<=m;i++){ scanf("%s",s+1);for(int j=1;j<=n;j++)a[i][j]=s[j]-'0'; scanf("%s",s+1);a[i][n+1]=s[1]-'0'; } gauss(); if(ans==-1)puts("Cannot Determine"); else{ printf("%d\n",ans); for(int i=1;i<=n;i++)if(a[i][n+1])puts("?y7M#");else puts("Earth"); } return 0; }
zzq wc-ctsc-apio-NOI Au;yql精通多项式;zyz精通女装;由乃精通数据结构;孔老师是毒奶大师;我没有学上:我们都有光明的前途。