线性基

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个。

posted @ 2017-10-06 16:11  Blue233333  阅读(160)  评论(0编辑  收藏  举报