【每日一题】The XOR Largest Pair

The XOR Largest Pair

https://ac.nowcoder.com/acm/problem/50993

Solution

题目要求一对数使得异或值最大。考虑异或运算的特点:按位进行且不进位。可以想到转化为二进制数进行操作,对每一位分别处理。

把每个整数看做长度为 串构建字典树。最低位为字典树的叶子结点。对于数 ,在字典树中检索一次,每次都尝试沿着“与 当前位相反的字符”向下访问。若存在这样的字符指针,令答案加上当前位代表的二进制数即可。由于二进制表示下第 位比第 位到第 位之和都大,所以保证了贪心的正确性。

具体实现时,注意数组大小开 倍。

Code

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=1e5+10;
int ans,n,tot=1,trie[N<<5][2];
void Insert(int x){
    int y,p=1;
    for(int i=31;i>=0;i--){
        y=(x>>i)&1;
        if(!trie[p][y])
            trie[p][y]=++tot;
        p=trie[p][y];
    }
}
int query(int x){
    int y,p=1,res=0;
    for(int i=31;i>=0;i--){
        y=((x>>i)&1)^1;
        if(trie[p][y])
            res+=(1<<i),p=trie[p][y];
        else
            p=trie[p][y^1];
        if(!p)
            break;
    }
    return res;
}
int main(){
    cin>>n;
    int x;
    for(int i=1;i<=n;i++){
        cin>>x;
        ans=max(ans,query(x));
        Insert(x);
    }
    cout<<ans;
    return 0;
}
全部评论

相关推荐

行云流水1971:这份实习简历的优化建议: 结构清晰化:拆分 “校园经历”“实习经历” 板块(当前内容混杂),按 “实习→校园→技能” 逻辑排版,求职意向明确为具体岗位(如 “市场 / 运营实习生”)。 经历具象化:现有描述偏流程,需补充 “动作 + 数据”,比如校园活动 “负责宣传” 可加 “运营公众号发布 5 篇推文,阅读量超 2000+,带动 300 + 人参与”;实习内容补充 “协助完成 XX 任务,效率提升 X%”。 岗位匹配度:锚定目标岗位能力,比如申请运营岗,突出 “内容编辑、活动执行” 相关动作;申请市场岗,强化 “资源对接、数据统计” 细节。 信息精简:删减冗余表述(如重复的 “负责”),用短句分点,比如 “策划校园招聘会:联系 10 + 企业,组织 200 + 学生参与,到场率达 85%”。 技能落地:将 “Office、PS” 绑定经历,比如 “用 Excel 整理活动数据,输出 3 份分析表;用 PS 设计 2 张活动海报”,避免技能单独罗列。 优化后需强化 “经历 - 能力 - 岗位需求” 的关联,让实习 / 校园经历的价值更直观。 若需要进一步优化服务,私信
实习,投递多份简历没人回...
点赞 评论 收藏
分享
2025-12-28 22:19
门头沟学院 Java
不敢追165女神:简历写得毫无特点,你说你要是大二或者大三找寒假实习到暑期实习这段时间,你的简历还能约到面试。但是你是研究生哥,面试官不会因为你是研究生而降低要求,反而会觉得你是研究生才学了这么一点?为什么我不找个同阶段的本科生?
简历中的项目经历要怎么写
点赞 评论 收藏
分享
评论
3
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务