题目

The XOR Largest Pair

解析

一年前听学长讲这道题,什么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;
}

最新文章

  1. Ubuntu设置root用户登录图形界面
  2. cocos2d-x项目实现android视频播放参考链接
  3. chrome dev debug network 的timeline说明
  4. 创建一个带模版的用户控件 V.2
  5. 在Android上使用Google V8 JS 引擎
  6. ORA-01078:failure in processing system parameters
  7. C程序第二章节:算法
  8. ecshop中的$user对象
  9. HBase缓存的使用
  10. js图片预加载与延迟加载
  11. httpd2.4.6配置文件解释说明
  12. Confluence 6 管理协同编辑 - 审计的考虑
  13. STM32定时器T2纯软件仿真时间准确,JTAG在线调试查看时间不准的问题
  14. show_space查看对象空间使用情况
  15. Hibernate的状态,缓存和映射
  16. python三层架构
  17. [试玩] FMXLinux (Firemonkey for Linux) Linux 桌面开发(第三方插件)
  18. UIAlertAction 改变字体颜色
  19. dell n2024交换机配置
  20. HTML如何禁止input输入

热门文章

  1. Intellij idea利用Statistic插件统计项目代码行数
  2. Vue系列——动态设置img标签的src属性
  3. windows server core 2016 IIS远程管理的那些坑
  4. Android Camera2/HAL3
  5. django入门5使用xadmin搭建管理后台
  6. 【Base】死锁产生的四个必要条件
  7. CentOS6非root用户下安装及配置CDH5.3.0
  8. Ubuntu16.04安装Superset
  9. java自定义jar包让jemeter使用
  10. 使用Javascript从Google Places搜索api获取纬度和经度