mxqz 厌氧代码
查看原帖
mxqz 厌氧代码
358739
BFSDFS123楼主2022/6/10 21:48

RT

我的线性基十分离谱,开 O2 13分,不开满分。

不知道哪块有UB,恳请大佬指出。

另附一个数据:

输入

1
28256052980733

输出

28256052980733

现在发现,开 O2 后,输出会变成28256052980732

离谱的是,当输入为

1
114514

的时候,输出为 114515


代码

#include<bits/stdc++.h>
using namespace std;
#define int long long
#define ll long long
const int inf=0x3f3f3f3f;
const long long Maxn=50;
const long long BIT=50;
int n;
ll ans[Maxn];
void insert(long long x)
{
	for(long long i=BIT;i>=0;i--)
	{
		if(!((x>>i*1ll)&1))
		{
			continue;
		}
		if(!ans[i])
		{
			ans[i]=x;
			return ;
		}
		x^=ans[i];
	}
}
long long query()
{
	long long res=0;
	for(long long i=BIT;i>=0;i--)
	{
		res=max(res,(res^ans[i]));
	}
	return res;
}
signed main()
{
	scanf("%lld",&n);
	for(int i=1;i<=n;i++)
	{
		long long x;
		scanf("%lld",&x);
		insert(x);
	}
	printf("%lld\n",query());
	return 0;
}
2022/6/10 21:48
加载中...