题意 【here】
有 n 个非负整数
你需要将这些数分成若干组,满足 n 个数中的每一个数都恰好被分到了一个组中,且每一组至少包含一个数。
定义一组数的权值为该组内所有数的异或和。请求出一种分组方案,使得分出的所有组数的权值之和最小,输出权值之和的最小值。
分析
因为 a^b<=a+b(可将异或理解为相加不进位),所以讲所有数异或起来一定最优
Code
#include<bits/stdc++.h>
using namespace std;
int n,x,ans;
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;i++) { scanf("%d",&x); ans^=x; }
cout<<ans;
return 0;
}