Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
39220 22fhq 【BJ】T1 C++ 通过 100 119 MS 4168 KB 1782 2025-12-27 14:00:02

Tests(28/28):


#include<bits/stdc++.h> #define int long long inline void read(int &x){x=0;char c=getchar();bool neg=0;for(;!isdigit(c);c=getchar())neg=(c=='-');for(;isdigit(c);c=getchar())x=(x<<3)+(x<<1)+(c^48);if(neg)x=-x;} #define read2(a,b) read(a),read(b) #define read3(a,b,c) read2(a,b),read(c) #define read4(a,b,c,d) read3(a,b,c),read(d) #define read5(a,b,c,d,e) read4(a,b,c,d),read(e) #define read6(a,b,c,d,e,f) read5(a,b,c,d,e),read(f) using namespace std; int n,a[500005]; namespace force{ vector<int>p; set<vector<int>>s; int ans=0; void dfs(){ if(s.count(p))return; int sum=0; for(int x:p)sum+=x; ans=max(ans,sum); s.insert(p); for(int l=0;l<n;l++){ for(int r=l+1;r<n;r++){ vector<int>lst=p; int x=(p[l]^p[r]); for(int i=l;i<=r;++i)p[i]=x; dfs(); p=lst; } } } } int p[31]; void insert(int x){ for(int i=30;i>=0;i--){ if(x>>i&1){ if(p[i])x^=p[i]; else { p[i]=x; return; } } } } int query(int x=0){ for(int i=30;i>=0;i--){ if(x>>i&1)continue; x^=p[i]; } return x; } void slv(){ read(n); for(int i=1;i<=n;i++)read(a[i]); if(n==1){ cout<<a[1]<<endl; return; } if(n==2){ cout<<max(a[1]+a[2],2*(a[1]^a[2]))<<endl; return; } if(n==3){ for(int i=1;i<=n;i++)force::p.push_back(a[i]); force::dfs(); cout<<force::ans<<endl; return; } for(int i=1;i<=n;i++)insert(a[i]); cout<<n*query()<<endl; } signed main(){ slv(); }


测评信息: