码迷,mamicode.com
首页 > 其他好文 > 详细

线性基(模板)

时间:2019-08-09 21:28:56      阅读:74      评论:0      收藏:0      [点我收藏+]

标签:math   mat   details   csdn   mem   detail   c++   个数   memset   

这里是连接o(´^`)o

线性基性质:

1.原序列里面的任意一个数都可以由线性基里面的一些数异或得到。
2.线性基里面的任意一些数异或起来都不能得到0 0
3.线性基里面的数的个数唯一,并且在保持性质一的前提下,数的个数是最少的

//#include<bits/stdc++.h>
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<cstring>
#include<queue>
#include<set>
#include<map>
#include<vector>

#define mem(a,b) memset(a,b,sizeof(a))
#define ll long long
#define sl(x) scanf("%lld",&(x))
#define rep(i,a,b) for(int i=a;i<=b;i++)

using namespace std;

int p[105];

void Insert(int now)
{
    per(i,62,0)
    {
        if((now&((ll)1<<i)))
        {
            if(!p[i])
            {
                p[i]=now;
                break;
            }
            now^=p[i];
        }
    }
}

#undef int
int main()
{
#define int long long
    int n;
    sl(n);
    rep(i,1,n)
    {
        int now;
        sl(now);
        Insert(now);
    }
    int ans=0;
    per(i,62,0)
        if((ans^p[i])>ans) ans^=p[i];
    cout<<ans<<"\n";

    return 0;
}

 

线性基(模板)

标签:math   mat   details   csdn   mem   detail   c++   个数   memset   

原文地址:https://www.cnblogs.com/minun/p/11329469.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!