for (int i=1;i<=n;i++) { scanf("%s",s+1); for (int j=1;j<=m;j++) a[j]=s[m-j+1]-'0'; for (int j=m;j>=1;j--) { if (!a[j]) continue; if (f[j].none()) {f[j]=a;break;} a^=f[j]; } }
性质:
线性基中任意若干个数异或得到的结果都不同。
线性基中第i个的最高位是i,如果存在第i个。