题目: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. petite-vue源码剖析-逐行解读@vue-reactivity之Map和Set的reactive

    本篇我们会继续探索reactive函数中对Map/WeakMap/Set/WeakSet对象的代理实现. Map/WeakMap/Set/WeakSet的操作 由于WeakMap和WeakSet分别是 ...

  2. Windbg调试工具命令详解

    .cls -------------------------------清屏 ~ ----------------------------------查看当前程序的所有线程 ~0s --------- ...

  3. kubeadm 搭建 K8s

    kubeadm 搭建 K8s 本篇主要记录一下 使用 kubeadm 搭建 k8s 详细过程 ,环境使用 VirtualBox 构建的3台虚拟机 1.环境准备 操作系统:Centos7 (CentOS ...

  4. CVPR 2022数据集汇总|包含目标检测、多模态等方向

    前言 本文收集汇总了目前CVPR 2022已放出的一些数据集资源. 转载自极市平台 欢迎关注公众号CV技术指南,专注于计算机视觉的技术总结.最新技术跟踪.经典论文解读.CV招聘信息. M5Produc ...

  5. 推荐系统 TOP K 评价指标

    目录 符号说明 示例数据 一.Hit Rate 二.Recall 三.NDCG 符号说明 \(top\_k\): 当前用户预测分最高的k个items,预测分由高到低排序 $pos$: 当前用户实际点击 ...

  6. RxJava + Retrofit源码解析

    RxJava + Retrofit怎么请求网络,具体的用法这里就不讲了,本文只讲一些重点源码. 版本如下: okhttp : "com.squareup.okhttp3:okhttp:3.1 ...

  7. B08. BootstrapBlazor实战 Menu 导航菜单使用(2)

    接上篇: B08. BootstrapBlazor实战 Menu 导航菜单使用(1) 3.项目模板 节省时间,直接使用 Bootstrap Blazor App 模板快速搭建项目 传送门: https ...

  8. HttpServletResponse & HttpServletRequest

    web服务器接收到客户端的http请求,针对这个请求,分别创建一个代表请求的HttpServletRequest对象,代表响应的一个HttpServletResponse: 如果要获取客户端请求过来的 ...

  9. Hadoop(一)Hadoop核心架构与安装

    Hadoop是什么 大白话,Hadoop是个存储数据,计算数据的分布式框架.核心组件是HDFS.MapReduce.Yarn. HDFS:分布式存储 MapReduce:分布式计算 Yarn:调度Ma ...

  10. 个人&博客信息

                博客配置 服务器:无 配置链接:在博客园中安装皮肤 皮肤:GEEK by GUANGZAN           个人简介 本蒟蒻是广东中山人 如果您有一些问题,请发送邮件至mo ...