The XOR Largest Pair(字典树)
2024-09-08 16:16:07
题目描述
在给定的 N 个整数 A1,A2,…,AN 中选出两个进行异或运算,得到的结果最大是多少?
输入格式
第一行一个整数 N。
第二行 N 个整数 Ai。
输出格式
一个整数表示答案。
样例
输入
5
2 9 5 7 0
输出
14
1 #include <iostream>
2 using namespace std;
3 int n;
4 const int N = 1e5 + 5;
5 int a[N];
6 int son[N * 35][3], cnt[N * 35];
7 int idx;
8
9 void insert(int x) {
10 int p = 0;
11
12 for (int i = 30; i >= 0; i--) {
13 int u = (x >> i) & 1;
14
15 if (!son[p][u])
16 son[p][u] = ++idx;
17
18 p = son[p][u];
19 }
20
21 cnt[p] = x;
22 }
23
24 int query(int x) {
25 int p = 0;
26 int ans = 0;
27
28 for (int i = 30; i >= 0; i--) {
29 int u = (x >> i) & 1;
30
31 if (son[p][u ^ 1]) {
32 ans += 1 << i;
33 p = son[p][u ^ 1];
34 } else
35 p = son[p][u];
36 }
37
38 return ans;
39 }
40
41 int main() {
42 scanf("%d", &n);
43 int res = 0;
44
45 for (int i = 1; i <= n; i++)
46 scanf("%d", &a[i]), insert(a[i]);
47
48 for (int i = 1; i <= n; i++) {
49 int t = query(a[i]);
50
51 if (t > res)
52 res = t;
53 }
54
55 cout << res << '\n';
56 return 0;
57 }
最新文章
- 为C# as 类型转换及Assembly.LoadFrom埋坑!
- Retina视网膜屏中CSS3边框图片像素虚边的问题
- 蓝桥杯 算法训练 区间k大数查询(水题)
- 【转】MYSQL入门学习之四:MYSQL的数据类型
- lua进阶(二)
- Linux下的bc计算器
- ci 的控制器文件夹下开加子文件夹
- AngularJS框架速写
- Arcgis for js开发之直线、圆、箭头、多边形、集结地等绘制方法
- Android 简单登陆 涉及 Button CheckBox TextView EditText简单应用
- 秘密袭击 [BZOJ5250] [树形DP]
- elasticsearch在CentOS环境下开机启动
- [jQ/PHP]再谈使用JS数组储值的运用(提交PHP处理)
- POJ 2676 Sudoku (数独 DFS)
- python中的struct模块
- linux手工释放内存
- python之路----面向对象进阶一
- iosFQ教程
- 解析xml文件步骤 -- pullparser
- excel 应用,右下角的小十字拖拽的时候形成递减的数列