题目大意:

题目链接:https://loj.ac/problem/10050
求一个数列中的任意两个数字亦或的最大值。


思路:

如果给出一个数字,求一个不比它位数大的数使得这两个数亦或的值最大,那么这个数应该取多少?
我们知道如果这个数转化为二进制后为100101101,那么亦或后最大值肯定是111111111,那么当另外一个数是011010010时,才能使他们的亦或值最大。
那么就构造一个 T r i e Trie Trie,将每个数转化为二进制之后都扔进 T r i e Trie Trie里,然后对于每一个数,再将它取反,并与 T r i e Trie Trie比较,如果有相同的就走相同的,否则就走不同的。


代码:

#include <cstdio>
#include <algorithm>
#define M 5000005
#define up 30
using namespace std;int n,x,y,k,tot=1,trie[M][2],d[M],z,ans;void insert(int x)  //插入
{int p=1;for (int i=up;i>=0;i--){int id=(x>>i)&1;  //取反if (!trie[p][id]) trie[p][id]=++tot;  //新建结点p=trie[p][id];}
}int find(int x)  //查找
{int p=1,sum=0; for (int i=up;i>=0;i--){int id=(x>>i)&1;if (trie[p][id^1])  //取反{sum=(sum<<1)|1;p=trie[p][id^1];}else if (trie[p][id])  //不取反{sum<<=1;p=trie[p][id];}}return sum;
}int main()
{scanf("%d",&n);for (int i=1;i<=n;i++)scanf("%d",&d[i]),insert(d[i]);for (int i=1;i<=n;i++)ans=max(ans,find(d[i]));printf("%d",ans);
}

【LOJ 10050】The XOR Largest Pair【Trie】相关推荐

  1. 【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 运算,得到的结果最大 ...

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

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

  3. 【LOJ10050】The XOR Largest Pair(字典树)

    problem 给定n个整数,在其中任意选出两个进行xor运算,得到的结果最大值是多少? n<1e5,ai在int范围内 solution 朴素枚举,O(n^2), TLE 考虑异或运算,相同为 ...

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

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

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

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

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

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

  7. 【BZOJ2115】[Wc2011] Xor 高斯消元求线性基+DFS

    [BZOJ2115][Wc2011] Xor Description Input 第一行包含两个整数N和 M, 表示该无向图中点的数目与边的数目. 接下来M 行描述 M 条边,每行三个整数Si,Ti ...

  8. 【BZOJ4269】再见Xor 高斯消元

    [BZOJ4269]再见Xor Description 给定N个数,你可以在这些数中任意选一些数出来,每个数可以选任意多次,试求出你能选出的数的异或和的最大值和严格次大值. Input 第一行一个正整 ...

  9. 【LOJ#6682】梦中的数论(min_25筛)

    [LOJ#6682]梦中的数论 https://www.cnblogs.com/cjyyb/p/11178395.html 利用min_25筛,求解约数个数函数平方的前缀和.

最新文章

  1. 计算机科学和PYTHON编程导论_15_概率与分布
  2. python 链式比较 2._特色的Python序列解包、链式赋值、链式比较
  3. VC.NET扩展Windows磁盘清理工具的功能
  4. 从晶体管特性曲线看饱和问题(Z)
  5. PHP中file() 函数和file_get_contents() 函数的区别
  6. VLAN简介交换机VLAN配置
  7. Windows服务器高并发处理IOCP(完成端口)详细说明
  8. C++ vector 初始化大小
  9. 简单多边形的三角剖分相关技术
  10. DSP之ICETEK-DM6437-B开发
  11. php模拟QQ登录获得skey码,请教:QQ授权第三方登录论坛之authorize模拟访问,一直失败...
  12. AAE结合resnet的生成器搭建(失败)
  13. 缺省路由(默认路由)实验
  14. SuperMap云许可配置
  15. 用双向宽搜来提高搜索效率
  16. Drupal 模块开发基本教程(三)
  17. matlab中的A(:)
  18. 友谊随笔——你是人间四月天(竹)
  19. 一个c程序的执行是从什么开始的?
  20. android 联系人 头像

热门文章

  1. JavaScript判断斐波那契数组
  2. 送花问题C语言程序设计,送花了
  3. 【战“疫”案例展】廊坊市安次区固安县区人民政府——旷视智能测温通行解决方案...
  4. linux日志文件存在哪里,linux日志文件
  5. 微信小程序封装懒加载图片
  6. 无线网主服务器连接异常,vivox9plus主服务器异常怎么办。连接不上网络?
  7. 星星之火-2:GSM手机的工作原理框图
  8. select下拉框动态获取数据
  9. 【3D动画演示】Focusky教程 | 修改交互动作
  10. idea中选中操作快捷键总结