#B. 最大异或对

    传统题 1000ms 256MiB

最大异或对

该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。

输入样例

3
1 2 3

输出样例

3
#include<bits/stdc++.h>
using namespace std;

const int N = 1e5+5;
int n, a[N], f[N*31][2], idx;

void minsert(int num){
	int p = 0;
	for(int i=30; i>=0; i--){   //右移i位
		int x = (num >> i) & 1;
		if(!f[p][x]) f[p][x]= ++idx;
		p = f[p][x];
	}
}

int mfind(int num){
	int p = 0;
	int ans = 0;
	for(int i=30; i>=0; i--){
		int x = (num >> i) & 1;
		if(f[p][!x]){
			ans += (1 << i);
			p = f[p][!x];
		}
		else p = f[p][x];
	}
	return ans;
}
int main(){
	cin >> n;
	for(int i=1; i<=n; i++){
		cin >> a[i];
		minsert(a[i]);   //构建trip树
	}
	
	int ans = 0;
	for(int i=1; i<=n; i++) ans = max(ans, mfind(a[i]));
	cout << ans;
	return 0;
}

【L2-第39课】-trip和哈希.2025.04.12

未认领
状态
已结束
题目
3
开始时间
2025-4-12 0:00
截止时间
2025-4-20 23:59
可延期
24 小时