最大异或对 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;
}
相关推荐
复杂网络22 分钟前
论最小 Agent 计算机的形态
算法
kisshyshy16 小时前
🍦 雪糕、食堂、火车厢:三幅漫画吃透栈、队列与链表
javascript·算法
猿人谷1 天前
不只是 CPU 阈值:STAR 如何用 GAT + Transformer 做容器级自动扩缩容?
人工智能·算法
复杂网络1 天前
Stable Diffusion 视觉大模型微调技术深度调研
算法
复杂网络1 天前
基于 Stable Diffusion 架构的视觉大模型代表性工作与原理深度解析
算法
MrZhao4001 天前
Agent Loop 如何用 Hook 扩展:权限、日志与工具拦截
算法
MrZhao4001 天前
Agent 为什么需要 Skills:别把所有知识都塞进 system prompt
算法
JieE2122 天前
LeetCode 101. 对称二叉树|JS 递归 + 迭代双解法,彻底搞懂镜像判断
javascript·算法
JieE2123 天前
LeetCode 56. 合并区间|超清晰 JS 图解思路,面试高频区间题
javascript·算法·面试
Jack204 天前
HarmonyOS开发中错误处理策略:网络异常统一处理
算法