最大异或对 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;
}
相关推荐
超级码力6667 小时前
【Latex文件架构】Latex文件架构模板
算法·数学建模·信息可视化
穿条秋裤到处跑8 小时前
每日一道leetcode(2026.04.29):二维网格图中探测环
算法·leetcode·职场和发展
Merlos_wind8 小时前
HashMap详解
算法·哈希算法·散列表
汉克老师9 小时前
GESP2025年3月认证C++五级( 第三部分编程题(1、平均分配))
c++·算法·贪心算法·排序·gesp5级·gesp五级
Yzzz-F11 小时前
Problem - 2205D - Codeforces
算法
智者知已应修善业11 小时前
【51单片机2个按键控制流水灯运行与暂停】2023-9-6
c++·经验分享·笔记·算法·51单片机
Halo_tjn12 小时前
Java Set集合相关知识点
java·开发语言·算法
生成论实验室12 小时前
《事件关系阴阳博弈动力学:识势应势之道》第四篇:降U动力学——认知确定度的自驱演化
人工智能·科技·神经网络·算法·架构
AI科技星12 小时前
全域数学·72分册:场计算机卷【乖乖数学】
算法·机器学习·数学建模·数据挖掘·量子计算
科研前沿13 小时前
镜像孪生VS视频孪生核心技术产品核心优势
大数据·人工智能·算法·重构·空间计算