摘要: 题目链接 #解题思路 以任意一个点为根,求出它到根的异或值,那么两个点之间异或值就是两者到根的异或值的异或值(因为重复的数异或值等于0),然后就变成了求n个数中两个数最大的异或值。 #代码 const int maxn = 1e6+10; const int maxm = 3e6+10; vecto 阅读全文
posted @ 2020-07-19 17:01 shuitiangong 阅读(140) 评论(0) 推荐(0) 编辑
摘要: 题目链接 #解题思路 如果想要两个异或的值最多,最好就是两个数从二进制的高位到地位,尽可能的满足一个是1一个是0。把每个数都转换成31位二进制串的形式,然后存到trie树中。然后一个一个的枚举每一个数,在trie树中找尽可能可以异或出最大值的数。 #代码 const int maxn = 1e5+1 阅读全文
posted @ 2020-07-19 16:24 shuitiangong 阅读(128) 评论(0) 推荐(0) 编辑