1. 程式人生 > >題解——洛谷P3812【模板】線性基

題解——洛谷P3812【模板】線性基

打了 () 運算優先級 運算 pac sca bre std 線性基

學了下線性基

使用好像並不復雜

打了板子

但是要註意位運算優先級

#include <cstdio>
#include <algorithm>
#include <cstring>
#define int long long
using namespace std;
const int MAX_BASE=(long long)63;
int base[64],a[60],n;
void getbase(void){
  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]; } } } } int ans=0; void query(void){ for(int i=MAX_BASE;i>=0;i--) if((base[i]^ans)>ans) ans=base[i]^ans; } signed main(){ freopen("testdata (1).in
","r",stdin); scanf("%lld",&n); for(int i=1;i<=n;i++) scanf("%lld",&a[i]); getbase(); query(); printf("%lld\n",ans); }

題解——洛谷P3812【模板】線性基