[bzoj1923][SdOI2010]外星千足虫
用Bitset好,输出搞反一次
#include<iostream> #include<cstdio> #include<vector> #include<bitset> #include<algorithm> using namespace std; const int SZ=1024; int n,m,cnt; bitset<SZ> bs[SZ]; inline void ins(bitset<SZ> x){ for(int i=1;i<=n;i++) if(x[i]) { if(bs[i].none()){ bs[i]=x; cnt++; return; } else x^=bs[i]; } } void output(){ for(int i=1;i<=n;i++){ for (int j=1;j<i;j++) if(bs[j][i]) bs[j]^=bs[i]; } for(int i=n;i>0;i--) if(bs[i][0]) cout<<"?y7M#"<<endl; else cout<<"Earth"<<endl; } int main(){ ios_base::sync_with_stdio(0); cin>>n>>m; for(int i=0;i<m;i++){ string s1,s2; cin>>s1>>s2; bitset<SZ> x(s1+s2); ins(x); if (cnt==n) { cout<<i+1<<endl; output(); return 0; } } cout<<"Cannot Determine"<<endl; return 0; }