problem

  • 给定n个整数,在其中任意选出两个进行xor运算,得到的结果最大值是多少?
  • n<1e5,ai在int范围内

solution

  • 朴素枚举,O(n^2), TLE
  • 考虑异或运算,相同为0,相反为1。我们希望最终值尽可能大,即1尽可能多。
  • 将每个整数看做二进制串,建立字典树。
  • 接下来遍历ai,并查找字典树。查找中的策略是每次选择与ai当前位相反的字符指针向下访问,即可得到最大值。
  • 复杂度O(31*n)

codes

#include<iostream>
using namespace std;
const int maxn = 1e5+10;int tot, tire[maxn*32][2];
void insert(int x){int u = 0;for(int i = 31; i >= 0; i--){int c = (x>>i)&1;if(!tire[u][c])tire[u][c] = ++tot;u = tire[u][c];}
}
int query(int x){int u = 0, ans = 0;for(int i = 31; i >= 0; i--){int c = (x>>i)&1;if(tire[u][!c])u = tire[u][!c], ans = (ans<<1)|1;else u = tire[u][c], ans = ans<<1;}return ans;
}int a[maxn];
int main(){ios::sync_with_stdio(false);int n;  cin>>n;for(int i = 1; i <= n; i++){cin>>a[i];  insert(a[i]);}int ans = 0;for(int i = 1; i <= n; i++)ans = max(ans, query(a[i]));cout<<ans<<'\n';return 0;
}

【LOJ10050】The XOR Largest Pair(字典树)相关推荐

  1. The XOR Largest Pair(算法竞赛进阶指南 P72,Trie)

    一.题目链接: The XOR Largest Pair 二.题目大意: 有 n 个数,求任意两个数异或得到的最大值. 三.分析: 刚学习了字典树,觉得还不错. 把每个数分解为二进制存到字典树中,查询 ...

  2. 数据结构总结1(火车进栈/兔子与兔子/括号画家/Editor/邻值查找/最大子序和/前缀统计/Phone List/The XOR Largest Pair)

    问题 A: 火车进栈 题目描述 这里有n列火车将要进站再出站-- 但是,每列火车只有1节-那就是车头-- 描述 有n列火车按1到n的顺序从东方左转进站,这个车站是南北方向的,它虽然无限长,只可惜是一个 ...

  3. HDU4825 Xor Sum 01字典树(Tire Tree)

    Xor Sum Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 132768/132768 K (Java/Others) Total ...

  4. 【CF1616H】Keep XOR Low(字典树)

    题面 题解 为了方便,我们将 xxx 加 1,然后让 aixoraj<xa_i\mathrm{~xor~}a_j<xai​ xor aj​<x . 可以把数插入到字典树中,然后遍历字 ...

  5. The XOR Largest Pair(01trie模板题)

    题意:给你一堆数,问你从里面跳出来两个数异或和最大. (菜鸡第一次用字典树做题) 题解:之前没用过字典树做题,,看了大佬的题解,才知道字典树还有这种妙用. 对于二进制,如果我们想让它最大,(一点贪心的 ...

  6. CodeForces - 979D Kuro and GCD and XOR and SUM(字典树+暴力+模拟)

    题目链接:点击查看 题目大意:说实话看到这么复杂而且还是英文的题面我是拒绝的,但题还是得补啊,就去百度找的题解看题意,题意大概是这样的: 给出n个操作,每个操作分为两种类型: 1 x:向集合中插入x ...

  7. loj#10050-The XOR Largest Pair【Trie(字典树)】

    正题 题目链接:https://loj.ac/problem/10050 题目大意 有n个数,求两个数使他们异或起来最大. 解题思路 我们考虑构建一个TrieTrieTrie. 两个分叉为0,1,对于 ...

  8. 【LOJ 10050】The XOR Largest Pair

    [题目] 传送门 题目描述: 在给定的 n n n个整数 a 1 a_1 a1​, a 2 a_2 a2​-- a n a_n an​ 中选出两个进行 x o r xor xor 运算,得到的结果最大 ...

  9. 【LOJ 10050】The XOR Largest Pair【Trie】

    题目大意: 题目链接:https://loj.ac/problem/10050 求一个数列中的任意两个数字亦或的最大值. 思路: 如果给出一个数字,求一个不比它位数大的数使得这两个数亦或的值最大,那么 ...

最新文章

  1. OVS DPDK vs OVS Deep Dive(十六)
  2. Dubbo和Spring Cloud微服务架构的对比
  3. 分布式面试 - zookeeper 都有哪些使用场景?
  4. 如何使div的浏览器窗口高度为100%
  5. Eclipse启动Tomcat时45秒超时的解决方法
  6. 没了Macbook的英特尔还好吗?比你想象的好
  7. 你所不知道的SQL Server数据库启动过程,以及启动不起来的各种问题的分析及解决技巧
  8. 关于proc的介绍,比较详细
  9. 【渝粤教育】国家开放大学2018年秋季 2208T政治学原理 参考试题
  10. 都说苹果秋季发布会像一杯白开水,那么...
  11. python log日志常用用法总结
  12. java的reader_Java Reader类
  13. OPPO发布小布虚拟人,开放面向开发者的多元AI能力
  14. 到底是人穷志短,还是志短人穷?
  15. 网络传输数据基本流程 详解
  16. 10年,从一个月薪2500的设备维修工,迫于压力转行,直到成为自动化测试专家···
  17. 【★】IT界8大恐怖预言
  18. DNS协议 : RFC1035 中文
  19. MFC封装功能成动态库相关问题汇总记录
  20. jquery轮播图无缝连接实现

热门文章

  1. Matlab Tricks(二十三)—— 保存图像到 pdf
  2. C++基础::运算符重载
  3. 10安装报错0x8007000d_windows10:MySQL8.0.22版本安装教程
  4. python三本经典书籍-有哪些 Python 经典书籍?
  5. python视频免费百度云-Python开发视频百度云分享
  6. python培训价目表-Python培训一般要多少钱?
  7. python用什么软件编程-python开发用什么编辑器
  8. python经典实例-python经典实例
  9. 腾讯云:一句话语音识别API接入步骤和说明
  10. 智能语音识别转文字字幕实时上屏直播系统