线性基又炸了
  • 板块学术版
  • 楼主MARCUSE
  • 当前回复8
  • 已保存回复8
  • 发布时间2022/8/3 17:38
  • 上次更新2023/10/27 17:11:08
查看原帖
线性基又炸了
199051
MARCUSE楼主2022/8/3 17:38

线性基模板题

n个数,取几个数使得它们的异或和最大

所以哪错了

#include <bits/stdc++.h>
#define ll long long
using namespace std;
const int N = 50 + 10;
ll n,ans,kk[N];
ll p[N],a[N];
void Insert(ll x){
	for(int i = N; i >= 0; i--){
		if(!(x & kk[i])) continue;
		if(!p[i]){
			p[i] = x;
			break;
		}
		x ^= p[i];
 	}
}
int main(){
	scanf("%lld",&n);
	kk[0] = 1;
	for(int i = 1; i <= N; i++){
		kk[i] = kk[i - 1] * 2; 
	}
	for(int i = 1; i <= n; i++){
		scanf("%lld",&a[i]);
		Insert(a[i]);
	}
	for(int i = N; i >= 0; i--){
		if((ans ^ p[i]) > ans) ans = ans ^ p[i];
	}
	printf("%lld",ans);
	return 0;
}

题面传送门

全部WA掉,但我抽了前两个数据点,答案是对的

2022/8/3 17:38
加载中...