题解 CF2094E
HYdroKomide · · 题解
题意:
给定一个整数数组
思路:
显然整数个数比较多不好下手,从二进制位上考虑。
由于
接下来可以直接暴力扫一遍所有的
程序如下:
#include<cstdio>
#include<cstring>
using namespace std;
const int N=2e5+5,D=35;
int T,n,a[N];
long long con[D][2],power[D];
int main(){
scanf("%d",&T);
power[0]=1;
for(int i=1;i<=30;i++)power[i]=power[i-1]*2;
while(T--){
long long ans=0;
scanf("%d",&n);
memset(con,0,sizeof(con));
for(int i=1;i<=n;i++){
scanf("%d",&a[i]);
int tmp=a[i];
for(int j=1;j<=30;j++){
con[j][!(tmp%2)]+=power[j-1];
tmp/=2;
}
}
for(int i=1;i<=n;i++){
int tmp=a[i];
long long nowans=0;
for(int j=1;j<=30;j++){
nowans+=con[j][tmp%2];
tmp/=2;
}
if(nowans>ans)ans=nowans;
}
printf("%lld\n",ans);
}
return 0;
}