当前位置: 首页 > news >正文

最大异或对 The XOR Largest Pair

题目来自洛谷网站:

思路:

两个循环时间复杂度太高了,会超时。
我们可以先将读入的数字,插入到字典树中,从高位到低位。对每个数查询的时候,题目要求是最大的异或对,所以我们选择相反的路径,构造最大异或值。

代码:

#include<bits/stdc++.h>
using namespace std;
const int N = 100010;int n;
int arr[N];
int ch[N*31][2], idx;//idx给树上每个节点一个编号void trie(int x){int p = 0;//p是当前走到了哪个节点编号for(int i = 30; i >= 0; i--){//取出最后一个数字//判断0 1int j = x>>i&1;if(!ch[p][j]) ch[p][j] = ++idx;p = ch[p][j];}
}int query(int x){int p = 0, res = 0;for(int i = 30; i >= 0; i--){int j = x>>i&1;//相反的一边if(ch[p][!j]){res += 1<<i;p = ch[p][!j];}else p = ch[p][j];}return res;
}int main(){cin >> n;for(int i = 1; i<=n; i++){cin >> arr[i];trie(arr[i]);}int ans = -1;for(int i = 1; i<=n; i++){ans = max(ans, query(arr[i]));}cout << ans << endl;return 0;
}


http://www.mrgr.cn/news/95514.html

相关文章:

  • STM32--SPI通信讲解
  • 蓝桥杯算法精讲:二分查找实战与变种解析
  • day 14
  • C++继承机制:从基础到避坑详细解说
  • Arm Linux ceres库编译
  • 考研课程安排(自用)
  • 基于STM32进行FFT滤波并计算插值DA输出
  • PDF文件转Markdown,基于开源项目marker
  • 面试复习-基础网络+运维知识
  • c++ STL
  • 【机器学习】机器学习工程实战-第2章 项目开始前
  • LLM - 重排序(Rerank)
  • 【计算机网络】网络简介
  • C语言入门教程100讲(8)算术运算符
  • C语言入门教程100讲(3)代码注释
  • C语言入门教程100讲(7)类型转换
  • 【前端】Visual Studio Code安装配置教程:下载、汉化、常用组件、基本操作
  • C语言入门教程100讲(4)输入输出
  • 【AI学习笔记】Coze平台实现将Excel文档批量导入数据库全过程
  • C++学习之网盘项目单例模式