The XOR Largest Pair (trie树)
题目描述
在给定的 NN 个整数 A_1,A_2,……,A_NA1,A2,……,AN 中选出两个进行xor运算,得到的结果最大是多少?
xor表示二进制的异或(^)运算符号。
输入格式
第一行输入一个整数 NN;
第二行输入 N 个整数 A_1~A_NA1~AN。
输出格式
输出一个整数表示答案。
1 #include <bits/stdc++.h>
2 //#define loveGsy
3 using namespace std;
4 const int N = 1e5 + 10;
5 int trie[N * 31][2]; //每个数用31位二进制构造Trie树,每个节点为0或1
6 int a[N], n, ans, tot = 1;
7
8 void insert(int x) {//构建trie树
9 int p = 0;
10 for (int k = 30; k >= 0; k--) {//高位向低位枚举
11 int t = x >> k & 1;//计算x的第k位是1还是0 0~30
12 if (!trie[p][t]) trie[p][t] = ++tot;
13 p = trie[p][t];
14 }
15 }
16
17 int search(int x) {
18 int p = 0, tmp = 0;
19 for (int k = 30; k >= 0; k--) {
20 int t = x >> k & 1;//取出x第k位
21 if (trie[p][t ^ 1]) {
22 p = trie[p][t ^ 1];//贪心思想,走相反位
23 tmp = tmp + (1 << k);
24 }
25 else p = trie[p][t];
26 }
27 return tmp;
28 }
29
30 int main() {
31 #ifdef loveGsy
32 freopen("xor.in", "r", stdin);
33 freopen("xor.out", "w", stdout);
34 #endif
35 cin >> n;
36 for (int i = 1; i <= n; i++) {
37 scanf("%d", &a[i]);
38 insert(a[i]);
39 ans = max(ans, search(a[i]));
40 }
41 cout << ans << endl;
42 return 0;
43 }
The XOR Largest Pair (trie树)的更多相关文章
- The XOR Largest Pair(tire树)
题目 The XOR Largest Pair 解析 一年前听学长讲这道题,什么01trie,好高级啊,所以没学,现在一看.... 看到xor就应该想到二进制,一看数据\(A_i< 2^{31} ...
- The XOR Largest Pair [Trie]
描述 在给定的N个整数A1,A2--AN中选出两个进行xor运算,得到的结果最大是多少? 输入格式 第一行一个整数N,第二行N个整数A1-AN. 输出格式 一个整数表示答案. 样例输入 3 1 2 3 ...
- CH 1602 - The XOR Largest Pair - [字典树变形]
题目链接:传送门 描述在给定的 $N$ 个整数 $A_1, A_2,\cdots,A_N$ 中选出两个进行xor运算,得到的结果最大是多少? 输入格式第一行一个整数 $N$,第二行 $N$ 个整数 $ ...
- CH1602 The XOR Largest Pair【Trie树】
1602 The XOR Largest Pair 0x10「基本数据结构」例题 描述 在给定的N个整数A1,A2……AN中选出两个进行xor运算,得到的结果最大是多少? 输入格式 第一行一个整数N, ...
- 「LOJ#10050」「一本通 2.3 例 2」The XOR Largest Pair (Trie
题目描述 在给定的 $N$ 个整数 $A_1,A_2,A_3...A_n$ 中选出两个进行异或运算,得到的结果最大是多少? 输入格式 第一行一个整数$N$. 第二行$N$个整数$A_i$. 输出格式 ...
- The XOR Largest Pair
刷刷书上的例题 在给定的N个整数A1,A2……An中选出两个进行XOR运算,得到的结果最大是多少?N<=105,0<=Ai<231 SOlution: 我们思考到对于两个数相异或,是 ...
- HDU 4825 Xor Sum (trie树处理异或)
Xor Sum Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 132768/132768 K (Java/Others)Total S ...
- LOJ10050 The XOR Largest Pair
题意 在给定的 \(N\) 个整数 \(A_1,A_2,-,A_N\) 中选出两个进行异或运算,得到的结果最大是多少? 对于 \(100\%\) 的数据,\(1\le N\le 10^5, 0\le ...
- HDU4825 Xor Sum(贪心+Trie树)
Problem Description Zeus 和 Prometheus 做了一个游戏,Prometheus 给 Zeus 一个集合,集合中包含了N个正整数,随后 Prometheus 将向 Zeu ...
随机推荐
- 字节输出流的续写和换行和字节输入流InputStream类&FileInputStream类介绍
数据追加续写 每次程序运行,创建输出流对象,都会清空目标文件中的数据.如何保目标文件中的数据,还能继续添加新数据呢? public FileOutputStream(File file,boolean ...
- iframe 标签
iframe是一个内联框架,可以在当前HTML页面中嵌入另一个文档,一般情况下使用iframe直接在页面嵌套iframe标签再指定src就可以了. iframe 的常用属性: name : 规定 &l ...
- 小白之Python基础(四)
条件判断和循环: 1.条件判断类型: 1)if语句:(注意:if中的条件如果是:非零数值.非空字符串.非空list等,就判断为True,否则为False.) 2)if-else语句: 3)if-eli ...
- 云原生Devops 的实现方法
DevOps 是一个持续改善软件产品的过程,它通过极短的发布周期.全面自动化的集成和交付流水线,以及团队间的紧密协作来不断改善产品.DevOps 的目标是缩短将创意变成用户可以使用的产品的时间,并降低 ...
- 通俗理解ABP中的模块Module
网上有不少文章说ABP的模块,有的直接翻译自官网介绍,有的分析Modlue的源代码,有的写一通代码,没什么注释,很少有能通俗说清的.那么,有两个问题:1.ABP中的模块到底是什么?2.搞这个东西是干嘛 ...
- HttpServletResponse 类
HttpServletResponse 类的作用 HttpServletResponse 类和 HttpServletRequest 类一样.每次请求进来,Tomcat 服务器都会创建一个 Respo ...
- 如何使用.NET 6的IHostedService和BackgroundService?
大家好,我是张飞洪,感谢您的阅读,我会不定期和你分享学习心得,希望我的文章能成为你成长路上的垫脚石,让我们一起精进. 本章是<定制ASP NET 6.0框架系列文章>的第七篇.本文内容和定 ...
- redis淘汰策略和过期策略
淘汰策略 https://blog.csdn.net/qq_55961709/article/details/124568269 LRU算法和LFU算法的区别: LRU:最近最少使用,淘汰时间长没有使 ...
- CF914G Sum the Fibonacci (快速沃尔什变换FWT + 子集卷积)
题面 题解 这是一道FWT和子集卷积的应用题. 我们先设 cnt[x] 表示 Si = x 的 i 的数量,那么 这里的Nab[x]指满足条件的 Sa|Sb=x.Sa&Sb=0 的(a,b)二 ...
- 大家都能看得懂的源码 - ahooks 是怎么处理 DOM 的?
本文是深入浅出 ahooks 源码系列文章的第十三篇,该系列已整理成文档-地址.觉得还不错,给个 star 支持一下哈,Thanks. 本篇文章探讨一下 ahooks 对 DOM 类 Hooks 使用 ...