题解0014:信奥一本通1472——The XOR Largest Pair(字典树)
题目链接:http://ybt.ssoier.cn:8088/problem_show.php?pid=1472
题目描述:在给定的 N 个整数中选出两个进行异或运算,求得到的结果最大是多少。
看到这道题要搞异或,首先想到把它们转成二进制。
那用什么存呢?
这就要用到一个比较NB的算法——字典树了。
(对字典树不太了解的可以先看我另一篇博客——https://www.cnblogs.com/wdrdsahudhisjabshdahuhsh/p/16323517.html)
这就是把一堆整数转成2进制数,再存到字典树里,并用字典树查找最大结果。
(ps:异或就是二进制中当两个值不相同时返回1,否则返回0)
上代码(有注释):
1 #include<bits/stdc++.h>
2 using namespace std;
3 int a,trie[4000001][2],tot=0;
4 void in(int a){//转成二进制并存入字典树
5 int root=0,id;
6 for(int i=30;i>=0;i--){//从最高位开始
7 id=(a>>i)&1;//提取a在二进制中第i位的值
8 if(trie[root][id]==0){
9 trie[root][id]=++tot;
10 }
11 root=trie[root][id];//字典树
12 }
13 }
14 int out(int a){
15 int root=0,id,ans=0;
16 for(int i=30;i>=0;i--){
17 id=(a>>i)&1;
18 if(trie[root][!id]){//找到不同的值了
19 ans=ans|(1<<i);//加上异或这一位的值
20 root=trie[root][!id];//换节点继续查
21 }else{
22 root=trie[root][id];//直接往下走
23 }
24 }
25 return ans;
26 }
27 int main(){
28 int n,ans=0;
29 cin>>n;
30 while(n--){
31 cin>>a;
32 in(a);
33 ans=max(ans,out(a));//求最大值
34 }
35 cout<<ans;//完事
36 }
题解0014:信奥一本通1472——The XOR Largest Pair(字典树)的更多相关文章
- CH 1602 - The XOR Largest Pair - [字典树变形]
题目链接:传送门 描述在给定的 $N$ 个整数 $A_1, A_2,\cdots,A_N$ 中选出两个进行xor运算,得到的结果最大是多少? 输入格式第一行一个整数 $N$,第二行 $N$ 个整数 $ ...
- The XOR Largest Pair(tire树)
题目 The XOR Largest Pair 解析 一年前听学长讲这道题,什么01trie,好高级啊,所以没学,现在一看.... 看到xor就应该想到二进制,一看数据\(A_i< 2^{31} ...
- 「LOJ#10050」「一本通 2.3 例 2」The XOR Largest Pair (Trie
题目描述 在给定的 $N$ 个整数 $A_1,A_2,A_3...A_n$ 中选出两个进行异或运算,得到的结果最大是多少? 输入格式 第一行一个整数$N$. 第二行$N$个整数$A_i$. 输出格式 ...
- CH1602 The XOR Largest Pair【Trie树】
1602 The XOR Largest Pair 0x10「基本数据结构」例题 描述 在给定的N个整数A1,A2……AN中选出两个进行xor运算,得到的结果最大是多少? 输入格式 第一行一个整数N, ...
- HDU 5715 XOR 游戏 二分+字典树
XOR 游戏 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5715 Description 众所周知,度度熊喜欢XOR运算(XOR百科). 今天,它 ...
- The XOR Largest Pair [Trie]
描述 在给定的N个整数A1,A2--AN中选出两个进行xor运算,得到的结果最大是多少? 输入格式 第一行一个整数N,第二行N个整数A1-AN. 输出格式 一个整数表示答案. 样例输入 3 1 2 3 ...
- 019(The XOR Largest Pair)(字典树)
题目:http://ybt.ssoier.cn:8088/problem_show.php?pid=1472 题目思路:异或是啥呀? 异或就是把两个数字变成位数相同的二进制在同位比较,相同为0,不同为 ...
- HDU--5269 ZYB loves Xor I (字典树)
题目电波: HDU--5269 ZYB loves Xor I 首先我们先解决 ai xor aj 每个数转化为二进制 我们用字典树统计 每个节点 0 和 1 的出现的个数 #include< ...
- HDU4825 Xor Sum(字典树解决最大异或问题)
Zeus 和 Prometheus 做了一个游戏,Prometheus 给 Zeus 一个集合,集合中包含了N个正整数,随后 Prometheus 将向 Zeus 发起M次询问,每次询问中包含一个正整 ...
随机推荐
- 用Exception类捕获所有异常的技术是怎么用的?
3.用Exception类捕获所有异常 马克-to-win:注意,一个事实是:Exception类是所有其他异常类的父类,所以Exception类能捕获所有的异常.马克-to-win:问题是用Exc ...
- 设置IDEA启动时不打开上次项目
步骤 1.启动IDEA,点击File 2.点击setting,在Appearance&Behavior中找到System Setting 3.取消勾选Reopen projects on st ...
- c++对c的拓展_增强
一:新增bool类型关键字:c中bool类型需要添加stdbool.h头文件,c++则可直接使用 void test(){ bool a=true; //c++可直接定义而c需添加头文件 true和f ...
- 更改docker默认的data,metadata存储大小(实操)
为什么要更改 data,metadata呢?我们运行环境中涉及大量数据操作,数据增长有时候很快,由于之前规划不足,所以磁盘很快达到瓶颈需要进行重新部署.这就需要调整原来的一些docker配置.操作系统 ...
- 我们可以定向调度某个pod在某个node上进行创建
集群环境:1.k8s用的是二进制方式安装 2.操作系统是linux (centos)3.操作系统版本为 7.2/7.4/7.94.k8s的应用管理.node管理.pod管理等用rancher.k8s令 ...
- Abp 实现通过手机号注册用户
前言 Abp 的 Identity 模块,实现了用户的管理,但是对于国内来讲,很多场景不能很好适配.比如:通过手机号进行注册的场景. Abp vnext Identity 以及 asp.net cor ...
- 入门学习SpringCloud
今天趁着空余时间,看了一丁点狂神SpringCloud的视频.学习微服务及架构相关知识,明天再学习系列视频的剩下部分,部署第一个SpringCloud练习. 同时趁着晚上课后大家有时间组织了小型会议, ...
- python基础练习题(题目 一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程找出1000以内的所有完数)
day12 --------------------------------------------------------------- 实例019:完数 题目 一个数如果恰好等于它的因子之和,这个 ...
- Ubuntu Qt5 Firebird 数据库驱动安装
Ubuntu Qt5 Firebird 数据库驱动安装 apt install libqt5sql5-ibase
- qt在linux下引用x11库编译错误的解决办法
首先安装x11的开发包,以debian9为例:sudo apt install xorg-dev这个解决.h头文件和.a库文件在qt的.pro文件中加入:LIBS += -lX11这个解决连接错误,注 ...