线性基

Posted chtholly

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了线性基相关的知识,希望对你有一定的参考价值。

向量空间中可以组合出整个空间的项的最小数叫做这个线性空间的维数,而所有的项作为该线性空间的一个基底,简称基。

线性基是一种特殊的基底,对应异或空间的基底,即使用基底相互异或可以得到整个空间

求几个数的线性基可以用高斯消元求解,将每个数二进制展开后,类比于求向量空间的基底,只是将加法换为不进位加法异或

for(int i=1;i<=n;++i)
{
    for(int j=i;j<=n;++j)
    if(a[j]>a[i]) swap(a[i],a[j]);
    
    if(!a[i]) break;//消元完成后
    b[++cnt]=a[i];
    for(int k=50;k;--k)
    {
        
        if(a[i]>>k&1)//用第一个有1的位来消元 
        {
            for(int j=1;j<=n;++j)
            {
                if(i!=j&&(a[j]>>k&1)) a[j]^=a[i];
            }
                break;
        }
    }
}

以上是关于线性基的主要内容,如果未能解决你的问题,请参考以下文章

bzoj 4269 再见Xor 线性基

Codeforces 1100F(线性基+贪心)

线性基 刷题记录

P3857 [TJOI2008]彩灯(线性基)

线性基讲解

线性基入门