当前位置: 首页 > 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 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;
}

相关文章:

  • CSS 学习笔记 - 蓝桥杯重点整理
  • golang Error的一些坑
  • 解决Centos使用yum命令报错“Cannot find a valid baseurl for repo: base/7/x86_64”问题
  • c++(红黑树以及封装)
  • tradingview 2022版和2024版本的jsapi对接。
  • Java定时任务的三重境界:从单机心跳到分布式协调
  • UNIX网络编程笔记:基本TCP套接字编程
  • CSS平面转换
  • 万用表测MOS好坏
  • Java EE(13)——网络编程——UDP/TCP回显服务器
  • 本地生活服务APP开发,市场发展全新商业机遇
  • 【day1】数据结构刷题 链表
  • 运算符重载(关键字operator的使用)
  • 2025年3月AI搜索发展动态与趋势分析:从技术革新到生态重构
  • CUDA 学习(3)——CUDA 初步实践
  • 【Spring】Spring Task详解
  • DeepSeek-V3到DeepSeek-R1的演进
  • 如何在Visual Studio和 .NET 7中使用C#配置代理服务器进行网页抓取,并使用HtmlAgilityPack进行HTML解析
  • React学习笔记20
  • 【分布式】冰山(Iceberg)与哈迪(Hudi)对比的基准测试
  • A股午后拉升,沪指收复3400点:大金融发力,两市成交超1.3万亿元
  • 汤加附近海域发生6.4级地震
  • 《蛮好的人生》:为啥人人都爱这个不完美的“大女主”
  • 演员黄晓明、金世佳进入上海戏剧学院2025年博士研究生复试名单
  • 扶桑谈|从石破茂“越菲行”看日本周边外交布局战略新动向
  • 教育部:启动实施县中头雁教师岗位计划,支撑县中全面振兴