最大异或对 The XOR Largest Pair

题目来自洛谷网站:

思路:

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

代码:

cpp 复制代码
#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 1
        int 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;
}
相关推荐
快去睡觉~9 分钟前
力扣152:乘积最大子数组
算法·leetcode·职场和发展
程序员Xu14 分钟前
【LeetCode热题100道笔记】二叉树的中序遍历
笔记·算法·leetcode
地平线开发者18 分钟前
理想汽车智驾方案介绍 4 | World model + 强化学习重建自动驾驶交互环境
算法·自动驾驶
石氏是时试40 分钟前
拉格朗日多项式
人工智能·算法·机器学习
二哈不在线1 小时前
代码随想录二刷之“贪心算法”~GO
算法·贪心算法·golang
快去睡觉~1 小时前
力扣416:分割等和子集
数据结构·c++·算法·leetcode·职场和发展·动态规划
仙俊红1 小时前
LeetCode每日一题,2025-9-5
算法·leetcode·职场和发展
阿维的博客日记1 小时前
LeetCode 240: 搜索二维矩阵 II - 算法详解(秒懂系列
算法·leetcode·矩阵
小O的算法实验室2 小时前
2024年ASOC SCI2区TOP,有效离散人工蜂群算法+变压器制造矩形切割问题,深度解析+性能实测
算法·论文复现·智能算法·智能算法改进
GEO_JYB2 小时前
从 MMLU 到 HumanEval:为什么评估大型语言模型(LLM)的基准至关重要?
人工智能·算法