| Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
|---|---|---|---|---|---|---|---|---|---|
| 39167 | LYLAKIOIAKIOI | 【BJ】T1 | C++ | 通过 | 100 | 260 MS | 2212 KB | 1311 | 2025-12-24 19:14:00 |
#include<bits/stdc++.h> #define ll long long using namespace std; const int N=5e5+10; int n,a[N]; ll ans=0; map<vector<int>,bool> vis; void dfs(vector<int> vec){ if(vis[vec]) return ;vis[vec]=1; ll sum=0; for(int i=1;i<=n;i++) sum+=vec[i-1]; ans=max(ans,sum); for(int i=1;i<=n;i++){ for(int j=i+1;j<=n;j++){ vector<int> tmp=vec; for(int k=i;k<=j;k++){ tmp[k-1]=vec[i-1]^vec[j-1]; }dfs(tmp); } } } struct base{ ll T[75]; void ins(ll x){ for(int i=62;i>=0;i--){ if((x>>i)&1){ if(!T[i]){ T[i]=x;return ; }else{ x^=T[i]; } } } } ll qry(){ ll res=0; for(int i=62;i>=0;i--){ if((res^T[i])>res) res^=T[i]; }return res; } }bs; int main(){ //freopen("xor.in","r",stdin); //freopen("xor.out","w",stdout); cin>>n; for(int i=1;i<=n;i++) cin>>a[i]; if(n<=3){ vector<int> vec; for(int i=1;i<=n;i++) vec.push_back(a[i]); dfs(vec); }else{ for(int i=1;i<=n;i++) bs.ins(a[i]); ans=1ll*n*bs.qry(); }cout<<ans<<endl; return 0; }