题目大意:
题目链接:https://www.luogu.org/problem/P5514
给定一个长度为的数列,把每一个数字分至一个组内。求每个组异或和之和的最小值。
思路:
因为亦或是不进位加法,所以。
所以两组数字异或起来一定不大于加起来。那么还不如合并两组。
所以答案就是所有数字的异或和。
代码:
#include <cstdio>
using namespace std;
const int N=1000010;
int n,ans,a[N];
int main()
{
scanf("%d",&n);
for (int i=1;i<=n;i++)
{
scanf("%d",&a[i]);
ans^=a[i];
}
printf("%d",ans);
return 0;
}