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

[P3812][模板]线性基

时间:2019-02-10 00:20:01      阅读:147      评论:0      收藏:0      [点我收藏+]

标签:ase   def   pac   int   ios   pre   void   mes   ret   

解题关键:求异或最大值。线性基模板题。

极大线性无关组的概念。

异或的值域相同。

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cstdlib>
#include<iostream>
#include<cmath>
using namespace std;
typedef long long ll;
const int MAX_BASE=63;
ll base[64],a[60],n;
void getbase(){
  for(int i=1;i<=n;i++){
      for(int j=MAX_BASE;j>=0;j--){
          if(a[i]>>j){
              if(!base[j]){
                base[j]=a[i];
                break;
              }
              a[i]^=base[j];
          }
      }
  }
}

ll query_max(){
  ll ans=0;
  for(int i=MAX_BASE;i>=0;i--){
      if((base[i]^ans)>ans){
          ans=base[i]^ans;
      }
  }
  return ans;
}
int main(){
  scanf("%lld",&n);
  for(int i=1;i<=n;i++)scanf("%lld",&a[i]);
  getbase();
  ll ans=query_max();
  printf("%lld\n",ans);
}

 

[P3812][模板]线性基

标签:ase   def   pac   int   ios   pre   void   mes   ret   

原文地址:https://www.cnblogs.com/elpsycongroo/p/10358521.html

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