题目描述
给定n个整数(数字可能重复),求在这些数中选取任意个,使得他们的异或和最大。
输入输出格式
输入格式:
第一行一个数n,表示元素个数
接下来一行n个数
输出格式:
仅一行,表示答案。
输入输出样例
输入样例#1: 复制
2 1 1
输出样例#1: 复制
1
说明
1≤n≤50,0≤Si?≤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>
原文地址:https://www.cnblogs.com/52dxer/p/10353489.html
时间: 2024-10-31 10:14:09