2023.10.30

T1

题面

image

解题

  1. 线性基板子题——构造异或线性基以及求若干个数异或和的最大值。
  2. CSDN-线性基详解

代码

点击查看代码
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int maxn=55;
ll d[maxn];
void add(ll x)
{
	for(int i=50;i>=0&&x;i--)
	{
		//cout<<x<<endl;
		//cout<<i<<" "<<d[i]<<endl;
		if(x&(1ll<<i))
		{
			if(d[i]) x^=d[i];
			else {d[i]=x;break;}
		}
	}
}
int n;
int main()
{
	scanf("%d",&n);
	while(n--)
	{
		ll x;scanf("%lld",&x);
		add(x);
	}
	ll ans=0;
	for(int i=50;i>=0;i--)
	{
		//cout<<i<<" "<<d[i]<<endl;
		if(ans&(1ll<<i)) continue;
		ans^=d[i];
	}
	printf("%lld",ans);
	return 0;
}
posted @ 2023-10-31 00:37  shyiaw  阅读(18)  评论(0)    收藏  举报