trie 143. 最大异或对

在给定的 NN 个整数 A1,A2……ANA1,A2……AN 中选出两个进行 xorxor(异或)运算,得到的结果最大是多少?

输入格式

第一行输入一个整数 NN。

第二行输入 NN 个整数 A1A1~ANAN。

输出格式

输出一个整数表示答案。

数据范围

1≤N≤1051≤N≤105,
0≤Ai<2310≤Ai<231

输入样例:
3
1 2 3
输出样例:
3

代码

#include<iostream>
#include<algorithm>using namespace std;const int N=100010,M=31*N;
int n;
int a[N],son[M][2],idx;void insert(int x)
{int p=0;for(int i=30;i>=0;i--){int &s=son[p][x>>i&1];if(!s)  s=++idx;p=s;}
}int search(int x)
{int p=0,res=0;for(int i=30;i>=0;i--){int s=x>>i&1;if(son[p][!s]){res+=1<<i;p=son[p][!s];}else    p=son[p][s];}return res;
}int main()
{scanf("%d",&n);for(int i=0;i<n;i++){scanf("%d",&a[i]);insert(a[i]);}int res=0;for(int i=0;i<n;i++){res=max(res,search(a[i]));}printf("%d\n",res);return 0;
}

今天下午暗下决心做三个题目,结果发现做这一个题目就已经非常吃力了。这个题目其实暑假的时候就已经看了题解,早几天看了讲解视频,还是有一些一知半解的。

主要的思路是建立一个trie树,然后异或运算是不进位加法,意思就是说,一个数字用二进制方法来表示,如果对应数位上的数字不相同,结果就是1,如果两个数字相同,结果就是0。

我们先把输入的数字使用二进制来进行表示,二进制表示使用算术右移和&运算来进行实现。

x>>i&1

我们知道,数位越高,对数字的影响越大,所以我们从最高位开始考虑问题。

insert函数是用来建立一个trie树的

search函数是用来寻找当前数字的最大的异或数值

假设我们现在数位是1,我们需要的数字就是0,我们选择有0的数字去进行异或运算,如果没有0,我们再去考虑其他情况,有点像是有很多数字可以供选择,我们选择一个满足条件的最优解

res+=1<<i;

这一行是进制的知识,就是把分散的数字归整成为一个十进制数字,可能会成为最后的答案数值 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/143708.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

【Android知识笔记】FrameWork中的设计模式

一、FrameWork中有哪些设计巧妙之处 例如: Binder调用,模糊进程边界: 屏蔽跨进程IPC通信的细节,让开发者把精力放在业务上面,无需关心进程之间的通信。Bitmap大图传输,高性能: 只传递Binder句柄,到目标进程后做内存映射,不用做大量数据拷贝,速度非常快。Zygote创建进…

自适应阈值分割-OTSU

OTSU 在前面固定阈值中选取了一个阈值为127进行阈值分割&#xff0c;那如何知道选的这个阈值效果好不好呢&#xff1f;答案是&#xff1a;不断尝试&#xff0c;所以这种方法在很多文献中都被称为经验阈值。 Otsu阈值法就提供了一种自动高效的二值化方法。Otsu算法也称最大类间…

4G工业路由器高效数据传输助力光伏发电站管理

光伏发电站是能源产业中一种利用太阳能技术将光转化为电能的常见设施。随着物联网技术与环保能源的不断进步和应用的普及&#xff0c;光伏发电站的管理也变得更加便捷高效。 光伏发电站结合4G工业路由器实现远程监控管理&#xff0c;并用于采集发电站中的传感器数据和监控信息…

美篇作文网教学资源源码-自带作文数据

非常漂亮的UI设计和页面排版&#xff01; 自适应手机pc端 页面内容均支持自定义 可以用来做网站矩阵&#xff0c;或者增强你其他网站板块&#xff0c;或者单独运营都可以。 可以通过广告方式变现&#xff0c;或者引流等等 友好的seo&#xff0c;更容易被浏览器收录 关注青狐…

世界第一ERP厂商SAP,推出类ChatGPT产品—Joule

9月27日&#xff0c;世界排名第一ERP厂商SAP在官网宣布&#xff0c;推出生成式AI助手Joule&#xff0c;并将其集成在采购、供应链、销售、人力资源、营销、数据分析等产品矩阵中&#xff0c;帮助客户实现降本增效。 据悉&#xff0c;Joule是一款功能类似ChatGPT的产品&#xf…

为什么我的remix没有injected web3

原因 Remix近期做了升级&#xff0c;去除了Web3的选项&#xff0c;您在进行部署的时候&#xff0c;可以选择injected provider metamask&#xff0c;同样能连接到Web3钱包哦。具体如下图所示&#xff1a;

CISSP学习笔记:安全模型的原则、设计和功能

第八章 安全模型的原则、设计和功能 8.1 使用安全设计原则实施和管理工程过程 项目开发的早起阶段考虑安全是非常重要的 8.1.1 客体和主体 主体&#xff1a;请求访问资源的用户或进程客体&#xff1a;用户或进程想要的访问信任传递&#xff1a;A信任B并且B信任C&#xff0c…

uni-app--》基于小程序开发的电商平台项目实战(三)

&#x1f3cd;️作者简介&#xff1a;大家好&#xff0c;我是亦世凡华、渴望知识储备自己的一名在校大学生 &#x1f6f5;个人主页&#xff1a;亦世凡华、 &#x1f6fa;系列专栏&#xff1a;uni-app &#x1f6b2;座右铭&#xff1a;人生亦可燃烧&#xff0c;亦可腐败&#xf…

7.1 为什么要用函数

主要内容&#xff1a; 这段文字主要讲述了为什么要使用函数来进行程序设计&#xff0c;以及函数在程序设计中的重要性和作用。以下是这段文字的主要内容和要点&#xff1a; ### 1. **简化和清晰度** - 当程序规模较大&#xff0c;功能较多时&#xff0c;如果所有代码都写在主…

04-Zookeeper集群详解

上一篇&#xff1a;03-Zookeeper客户端使用 Zookeeper 集群模式一共有三种类型的角色 Leader: 处理所有的事务请求&#xff08;写请求&#xff09;&#xff0c;可以处理读请求&#xff0c;集群中只能有一个LeaderFollower&#xff1a;只能处理读请求&#xff0c;同时作为 Le…

【数据库——MySQL】(6)查询(1)

目录 1. 数据库查询1.1 输出项为列名1.2 输出项为表达式1.3 输出内容变换1.4 消除输出项的重复行1.5 聚合函数 2. 查询条件&#xff1a;逻辑条件2.1 比较运算2.2 模式匹配2.3 范围限定2.4 空值判断 3. 分组3.1 基本分组3.2 分组汇总 4. 分组后筛选5. 输出行排序5.1 ORDER BY5.2…

Anchors

这是源代码定义的anchors概念&#xff1a; 实现过程&#xff1a; 假如有一张500500的图片&#xff0c;那么经过第一步深度卷积网络之后&#xff08;4次池化&#xff09;&#xff0c;最终就会变成一个3232的特征&#xff1a; 在开源代码实现里面&#xff1a; 所以经过卷积完之后…

leetCode 62.不同路径 动态规划 + 空间复杂度优化

62. 不同路径 - 力扣&#xff08;LeetCode&#xff09; 一个机器人位于一个 m x n 网格的左上角 &#xff08;起始点在下图中标记为 “Start” &#xff09;。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角&#xff08;在下图中标记为 “Finish” &#xf…

基于SpringBoot的酒店客房管理系统

基于SpringBoot的酒店管理系统、酒店客房管理系统 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;SpringBoot、Vue、Mybaits Plus、ELementUI工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 首页 管理员界面 用户界面 代码展示 <temp…

如何使用docker快速部署MinDoc文档系统

MinDoc是非常优秀的知识分享系统&#xff0c;但是很多刚接触的人会一脸懵逼&#xff0c;而且官方文档写的也并不清晰&#xff0c;所以和大家分享一下快速部署MinDoc的方法。 首先docker环境先自行安装好&#xff0c;这里不再赘述。 拉取docker镜像&#xff1a; docker pull …

MybatisPlus自定义SQL用法

1、功能概述&#xff1f; MybatisPlus框架提供了BaseMapper接口供我们使用&#xff0c;大大的方便了我们的基础开发&#xff0c;但是BaseMapper中提供的方法很多情况下不够用&#xff0c;这个时候我们依旧需要自定义SQL,也就是跟mybatis的用法相同&#xff0c;自定义xml映射文…

lv5 嵌入式开发-8 内存映射

目录 1 内存映射基本使用 1.1 内存映射概念 1.2 内存映射的使用 2 共享内存&#xff08;古老的 System V IPC&#xff09; 2.1 基本概念 2.2 共享内存使用步骤 2.3 共享内存使用 掌握&#xff1a;内存映射概念、内存映射使用、内存映射注意事项、了解SYSTEM V 共享内存概…

nodejs+vue中国非物质文化遗产网站设计与实现elementui

前端页面&#xff1a; 导航栏借鉴下面的 1首页&#xff1a;带有一个全屏轮播图和其他的内容 2咨询页&#xff1a;有关中国非物质文化遗产的一些新闻咨询网站对于记录非遗这种无形的、动态的文化资源有着其他技术无可替代的优势。用户可以在该网站浏览、了解和学习非遗文化&…

uni-app:canvas-绘制图形4(获取画布宽高,根据画布宽高进行图形绘制)

效果 代码 var width ; var height ; const query uni.createSelectorQuery(); //获取宽度 query.select(#firstCanvas).fields({ size: true }, (res) > { width res.width; height res.height; }).exec(); console.log(宽度width); console.log(高…

关于Pod的内存使用率一直很高的问题分析

生产环境中在流量高峰期出现pod内存使用率很高&#xff0c;pod批量重启&#xff0c;错误日志中还有OOM相关信息。 查看堆内存的使用值 Pod使用的内存不能直接在pod中通过top命令查看&#xff0c;这种方式看到的是pod所在node的资源使用情况。想查看pod的资源使用情况需要用ku…