题目:http://ybt.ssoier.cn:8088/problem_show.php?pid=1472

题目思路:异或是啥呀?

异或就是把两个数字变成位数相同的二进制在同位比较,相同为0,不同为1,如:

011

100

——

111

所以 3 XOR 4 == 7

那让我们找异或不就是说把一大堆二进制的字符串存起来找嘛

那基本思路就出来了,将数字转变成由 0 和 1组成的字符串,然后找不同

字符串?找不同?那不就是把字典树糊人脸上了嘛

所以这个程序的非主体部分就白给了:

一个是主程序,输入 n,输入 n 个 x,存起来

一个是存储,用 (x>>k)&1 把每一位倒腾出来再用字典树的方式存储

注意!异或的解释里有“位数相同”这几个字

所以要在前面用 0 补齐,它说了“小于 2^31 "和“小于 10^5 ”,所以横坐标开到 32*100000+1 就足够

接下来就是程序的主体部分:搜索,我应该如何找到那两个凑起来最大的串串呢

首先我可以先敲定一个字符串,然后再上树里找去

但是那两个答案串本就无法确定,那直接一个一个定得了

所以在主程序里面每存一个 x 就要假定这个 x 为其中一个答案串去寻找

还是用 (x>>k)&1 把每一位倒腾出来然后一位一位搞

如果说它的对位,也就是那个存 !((x>>k)&1) 的地方有东西

也就是说平白无故多个1出来

行了,把 1 以正确的位置存进ans(即 k ),然后那个我们对位的串就是第二个答案串了

凑凑凑出来一个 ans,打回去,和其他的一众 ans 比比,找那个“力拔山兮气盖世”的

最后输出

注意!从最高位开始,性价比最高

#include<bits/stdc++.h>
using namespace std;
int trie[3200001][3],tot=1,ans=-10000,n,x,i;
void putin(int x){
int p=1,k,t;
for(k=30;k>=0;k--){
//注意,从最高位开始
t=(x>>k)&1;//把每一位导出来
if(trie[p][t]==0){
trie[p][t]=(++tot);
}
p=trie[p][t];
}//以字典树的方式存储
}
int finding(int x){//核心程序
int ans=0,p=1,k;
//ans初始值必须等于0
//不然出来什么“野1”不好解释
for(k=30;k>=0;k--){
//注意,从最高位开始
int t=(x>>k)&1;//一位一位导
if(trie[p][!t]){
//对位有人
ans=ans|(1<<k);
//按正确的位置存1
p=trie[p][!t];
//将其视为第二个答案串
}
else{//什么?难办?
p=trie[p][t];
//那就别办了
}
}
return ans;//打回去
}
int main(){
scanf("%d",&n);//n
for(i=0;i<n;++i){//n个数字
scanf("%d",&x);//输进去
putin(x);//存了它
ans=max(ans,finding(x));
//找那个最大的
}
printf("%d",ans);//打出来
return 0;
}


题目总结:新知识点:看到位运算可以往字符串方面想想

019(The XOR Largest Pair)(字典树)的更多相关文章

  1. CH 1602 - The XOR Largest Pair - [字典树变形]

    题目链接:传送门 描述在给定的 $N$ 个整数 $A_1, A_2,\cdots,A_N$ 中选出两个进行xor运算,得到的结果最大是多少? 输入格式第一行一个整数 $N$,第二行 $N$ 个整数 $ ...

  2. The XOR Largest Pair(tire树)

    题目 The XOR Largest Pair 解析 一年前听学长讲这道题,什么01trie,好高级啊,所以没学,现在一看.... 看到xor就应该想到二进制,一看数据\(A_i< 2^{31} ...

  3. CH1602 The XOR Largest Pair【Trie树】

    1602 The XOR Largest Pair 0x10「基本数据结构」例题 描述 在给定的N个整数A1,A2……AN中选出两个进行xor运算,得到的结果最大是多少? 输入格式 第一行一个整数N, ...

  4. 「LOJ#10050」「一本通 2.3 例 2」The XOR Largest Pair (Trie

    题目描述 在给定的 $N$ 个整数 $A_1,A_2,A_3...A_n$ 中选出两个进行异或运算,得到的结果最大是多少? 输入格式 第一行一个整数$N$. 第二行$N$个整数$A_i$. 输出格式 ...

  5. 字典树-THE XOR largest pair

    题目:给你n个数字A1,A2....An ,问从中选出两个数字异或运算得到的最大结果是多少 0<=Ai<231 用字典树,记录每个数字的31位2进制01串(int 为4个字节,每个字节8个 ...

  6. The XOR Largest Pair(Tire字典树应用)

    题目链接:传送门 思路:建立一个32位的字典树,对每一个要插入的数字查找它异或的最大值(就是尽量全部二进制的值都相反), 然后获得两个数异或的最大值. #include<iostream> ...

  7. 题解0014:信奥一本通1472——The XOR Largest Pair(字典树)

    题目链接:http://ybt.ssoier.cn:8088/problem_show.php?pid=1472 题目描述:在给定的 N 个整数中选出两个进行异或运算,求得到的结果最大是多少. 看到这 ...

  8. HDU--5269 ZYB loves Xor I (字典树)

    题目电波: HDU--5269 ZYB loves Xor I 首先我们先解决 ai xor aj 每个数转化为二进制  我们用字典树统计 每个节点 0 和 1 的出现的个数 #include< ...

  9. HDU 5715 XOR 游戏 二分+字典树

    XOR 游戏 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5715 Description 众所周知,度度熊喜欢XOR运算(XOR百科). 今天,它 ...

随机推荐

  1. Envoy熔断限流实践(一)基于Rainbond插件实现熔断

    Envoy 可以作为 Sevice Mesh 微服务框架中的代理实现方案,Rainbond 内置的微服务框架同样基于 Envoy 实现.本文所描述的熔断实践基于 Rainbond 特有的插件机制实现. ...

  2. 【FAQ】HMS Core广告服务:如何获取正式广告位ID以及流量变现的受限情况

    HMS Core广告服务开发指南中提到"xxxx为测试专用的广告位ID,App正式发布时需要改为正式的广告位ID",那么今天咱们就来说说,怎么获取正式的广告位ID. 测试广告位ID ...

  3. [笔记] prufer 序列

    什么是 prufer 序列 是可以和 \(n\) 个有标号节点的无根树一一对应的长度为 \(n-2\) 的序列. 一般来说是用于和树相关的组合计数问题,但是可能会出现一些变形,所以除了要了解一些性质, ...

  4. keepalived安装及配置文件详解

    一个执着于技术的公众号 在上一篇文章中,我们对Keepalived进行了简单入门学习: Keepalived入门学习 今天我们继续学习Keepalived服务. 一.安装Keepalived服务 两种 ...

  5. muduo项目介绍

    在上一个集群聊天服务器项目中,我使用了muduo作为网络库,然后主要实现了业务逻辑等,所以为了深入网络库的代码和实现,我跟着一位老师的代码去实现了muduo库的基本原理和作用,当然只是实现了主体的代码 ...

  6. 现代 CSS 解决方案:CSS 数学函数

    在 CSS 中,其实存在各种各样的函数.具体分为: Transform functions Math functions Filter functions Color functions Image ...

  7. 『现学现忘』Git基础 — 25、git log命令参数详解

    目录 1.git log命令说明 2.git log命令参数 (1)不带参数 (2)常用显示参数 (3)--pretty参数 (4)--date=参数 (5)筛选参数 git log命令主要用于查看G ...

  8. git 撤销远程 commit

    参考: https://blog.csdn.net/xs20691718/article/details/51901161 https://www.cnblogs.com/lfxiao/p/93787 ...

  9. 历经70+场面试,我发现了大厂面试的bug,并总结其中心得

    想起了学弟在去年秋招时面试了50余家,加上暑期实习面试了20余家,加起来也面试了70余场. 基本把国内有名的互联网公司都面了一遍,不敢说自己的面试经验很丰富,但也是不差的. 这次专门把大厂的面试做了个 ...

  10. QC快速充电

    QC快充 一.高通QC快充的介绍 二.识别充电类型的芯片介绍 三.QC充电曲线 四.如何在log中看QC充电类型 五.QC3识别错误 六.波形图 一.高通QC快充的介绍 高通QC快充技术,又称Quic ...