这是我线性基模板的代码
#include <bits/stdc++.h>
#define ll long long
#define lowbit(x) x&-x
#define PII pair<int,int>
using namespace std;
const int N=1e5+10,M=1e4+10,O=1e3+10,mod=1e9+7,INF=0x3f3f3f3f;
int n,m,t,q,ans,cnt,num,tot;
string s;
ll p[55];
void insert(ll x) {
for(int i=56;i>=0;i--) {
if(x&(1LL<<i)) {
if(!p[i]) {
p[i]=x;
break;
}
x^=p[i];
}
}
}
ll ask() {
ll ans=0;
for(int i=56;i>=0;i--) {
if((ans^p[i])>ans) ans^=p[i];
}
return ans;
}
signed main() {
scanf("%d",&n);
for(int i=1;i<=n;i++) {
ll x;
scanf("%lld",&x);
insert(x);
}
printf("%lld",ask());
return 0;
}
在全局变量中有一个
string s;
我没有用到它,但是我在 dev 上输入样例会随机输出一个大数字,但是在洛谷IDE 上是正常的,只要我注释掉它,dev 的输出也是对的,这是为什么。