列表

详情


NC50341. The XOR Largest Pair

描述

在给定的N个整数中选出两个进行异或运算,得到的结果最大是多少?

输入描述

第一行一个整数N。
第二行N个整数A_i

输出描述

一个整数表示答案。

示例1

输入:

5
2 9 5 7 0

输出:

14

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C++ 解法, 执行用时: 100ms, 内存消耗: 16616K, 提交时间: 2021-08-19 20:31:44

#include<bits/stdc++.h>
using namespace std;
const int N = 1e5+5;
int t[N*31][2],num[N*31],idx;
int ans=0;
void insert(int a){
	int p=0;
	for(int i=31;i>=0;i--){
		int j=a>>i&1;
		if(!t[p][j]) t[p][j]=++idx;
		p=t[p][j];
	}
	num[p]=a;
}
void query(int a){
	int p=0;
	for(int i=31;i>=0;i--){
		int j=a>>i&1;
		if(t[p][j^1]) p=t[p][j^1];
		else p=t[p][j];
	}
	ans=max(ans,a^num[p]);
}

int main(){
	int n;cin >> n;
	for(int i=1;i<=n;i++){
		int a;cin >> a;
		insert(a);
		query(a);
	}
	cout << ans << endl;
}

上一题