当前位置: 首页> 娱乐> 影视 > 邯郸市建设局官网_清远哪里有网页设计培训学费_产品软文范例大全_友情链接交易平台

邯郸市建设局官网_清远哪里有网页设计培训学费_产品软文范例大全_友情链接交易平台

时间:2025/7/14 19:08:46来源:https://blog.csdn.net/2202_75344116/article/details/146442343 浏览次数:0次
邯郸市建设局官网_清远哪里有网页设计培训学费_产品软文范例大全_友情链接交易平台

题目来自洛谷网站:

思路:

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

代码:

#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 1int 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;
}

关键字:邯郸市建设局官网_清远哪里有网页设计培训学费_产品软文范例大全_友情链接交易平台

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: