码迷,mamicode.com
首页 > 其他好文 > 详细

线性基模板

时间:2019-02-06 10:46:51      阅读:167      评论:0      收藏:0      [点我收藏+]

标签:bsp   cout   UNC   list   html   输出   ora   输入输出格式   重复   

题目描述

给定n个整数(数字可能重复),求在这些数中选取任意个,使得他们的异或和最大。

输入输出格式

输入格式:

 

第一行一个数n,表示元素个数

接下来一行n个数

 

输出格式:

 

仅一行,表示答案。

 

输入输出样例

输入样例#1: 复制
2
1 1
输出样例#1: 复制
1

说明

1n50,0Si?2^50

#include<iostream>
#include<algorithm>
using namespace std;
#define ll long long
ll a[100010], b[70];
ll n, ans=0;
int main()
{
	cin >> n;
	for (int i = 0; i < n; i++)
		cin >> a[i];
	for (int i = 0; i <n; i++)
		for (int j = 62; j >= 0; j--)
			if (1ll << j & a[i])
				if (!b[j]) {
					b[j] = a[i];
					break;
				}
				else
					a[i] ^= b[j];
	for (int i = 62; i >= 0; i--)
		ans = max(ans, ans^b[i]);
	cout << ans << endl;
	return 0;
}
//c++ max函数头文件是#include<algorithm>

  

线性基模板

标签:bsp   cout   UNC   list   html   输出   ora   输入输出格式   重复   

原文地址:https://www.cnblogs.com/52dxer/p/10353489.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!