The XOR Largest Pair(tire树)
题目
解析
一年前听学长讲这道题,什么01trie,好高级啊,所以没学,现在一看。。。。
看到xor就应该想到二进制,一看数据\(A_i< 2^{31}\),考虑把所有的数都处理成长度为32的二进制数,插入字典树中,查询的时候就逐位比较,有不同的先走不同的那边,这样保证了每次插入一个数时查询的结果是最大的,然后不断更新最大值就可以了
我这种不用位运算的懒人就直接用bitset维护了
从高位到地位插入可能好算一些
代码
#include <bits/stdc++.h>
using namespace std;
const int N = 4e6 + 10;
int n, a, num, ans;
struct node {
int nx[2];
} e[N];
void insert(int n) {
bitset<35>s(n);
int rt = 0;
for (int i = 30; i >= 0; --i) {
int v = (int)s[i];
if (!e[rt].nx[v]) e[rt].nx[v] = ++num;
rt = e[rt].nx[v];
}
}
int query(int x) {
bitset<35>s(x);
int rt = 0, ret = 0;
for (int i = 30; i >= 0; --i) {
int v = (int)s[i];
if (e[rt].nx[v ^ 1]) ret = ret << 1 | 1, rt = e[rt].nx[v ^ 1];
else ret <<= 1, rt = e[rt].nx[v];
}
return ret;
}
int main() {
cin >> n;
for (int i = 1, x; i <= n; ++i) {
cin >> x;
ans = max(ans, query(x));
insert(x);
}
cout << ans;
}
The XOR Largest Pair(tire树)的更多相关文章
- 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(Tire字典树应用)
题目链接:传送门 思路:建立一个32位的字典树,对每一个要插入的数字查找它异或的最大值(就是尽量全部二进制的值都相反), 然后获得两个数异或的最大值. #include<iostream> ...
- 019(The XOR Largest Pair)(字典树)
题目:http://ybt.ssoier.cn:8088/problem_show.php?pid=1472 题目思路:异或是啥呀? 异或就是把两个数字变成位数相同的二进制在同位比较,相同为0,不同为 ...
- The XOR Largest Pair (trie树)
题目描述 在给定的 NN 个整数 A_1,A_2,--,A_NA1,A2,--,AN 中选出两个进行xor运算,得到的结果最大是多少?xor表示二进制的异或(^)运算符号. 输入格式 第一行输入 ...
- 字典树-THE XOR largest pair
题目:给你n个数字A1,A2....An ,问从中选出两个数字异或运算得到的最大结果是多少 0<=Ai<231 用字典树,记录每个数字的31位2进制01串(int 为4个字节,每个字节8个 ...
- 题解0014:信奥一本通1472——The XOR Largest Pair(字典树)
题目链接:http://ybt.ssoier.cn:8088/problem_show.php?pid=1472 题目描述:在给定的 N 个整数中选出两个进行异或运算,求得到的结果最大是多少. 看到这 ...
- The XOR Largest Pair(字典树)
题目描述 在给定的 N 个整数 A1,A2,-,AN 中选出两个进行异或运算,得到的结果最大是多少? 输入格式 第一行一个整数 N. 第二行 N 个整数 Ai. 输出格式 一个整数表示答案. 样例 ...
随机推荐
- 【Gamma】Scrum Meeting 1 & 与助教谈话
前言 Gamma阶段第1次会议在5月26日22:00由PM在大运村一公寓三层召开, 时长30min. 任务分配 姓名 今日任务 明日任务 困难 周博闻 用户控制器解耦和注释 用户控制器解耦和注释 周国 ...
- linux 定时任务 cron,利用cron进程保活
cron定时任务 crond服务操作命令 /sbin/service crond start //启动服务 /sbin/service crond stop //关闭服务 /sbin/service ...
- Shell命令行提示定制
/******************************************************************************* * Shell命令行提示定制 * 说明 ...
- PHP系列 | PDO::prepare(): send of 68 bytes failed with errno=32 Broken pipe
设计场景 1.开启Redis的键空间过期事件(键过期发布任务),创建订单创建一个过期的key,按照订单号为key,设置过期时间. 2.通过Redis的订阅模式(持久阻塞),获取到订单号进行组装. 3. ...
- CentOS7下NFS服务安装及配置固定端口
CentOS7下NFS服务安装及配置 系统环境:CentOS Linux release 7.4.1708 (Core) 3.10.0-693.el7.x86_64 软件版本:nfs-utils-1. ...
- (转)ES6系列——let和const深入理解
原文:https://juejin.im/post/59e6a86d518825422c0cbb6f https://www.cnblogs.com/slly/p/9234797.html-----l ...
- EasyNVR网页摄像机无插件H5、谷歌Chrome直播方案安装使用常见问题的分析
EasyNVR对于互联网的视频直播还是有着一定的贡献的.为了方便用户的体验使用,我们也在互联网上放置了对应的试用版本,并且也会随着功能是更新也会定期的更新上去.软件包也会配置对应的使用文档和说明. 许 ...
- LwIP应用开发笔记之二:LwIP无操作系统UDP服务器
前面我们已经完成了LwIP协议栈基于逻辑的基本移植,在这一节我们将以RAW API来实现UDP服务器. 1.UDP协议简述 UDP协议全称是用户数据报协议,在网络中它与TCP协议一样用于处理数据包, ...
- elk配置路径
elk/usr/local/etc/elasticsearch-6.5.1/usr/local/Cellar/logstash/6.5.1/./logstash -f/usr/local/Cellar ...
- Docker应用容器化
Docker 的核心思想就是如何将应用整合到容器中,并且能在容器中实际运行. 将应用整合到容器中并且运行起来的这个过程,称为“容器化”(Containerizing),有时也叫作“Docker化”(D ...