【洛谷P5514】永夜的报应【模拟】

题目大意:

题目链接:https://www.luogu.org/problem/P5514
给定一个长度为nn的数列,把每一个数字分至一个组内。求每个组异或和之和的最小值。


思路:

因为亦或是不进位加法,所以x xor yx+yx\ xor\ y\leq x+y
所以两组数字异或起来一定不大于加起来。那么还不如合并两组。
所以答案就是所有数字的异或和。


代码:

#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;
}
posted @ 2019-08-24 16:38  全OI最菜  阅读(96)  评论(0编辑  收藏  举报