在給定的n個整數a1,
a2……
an'>a1,a2……an
a1,a2……an中選出兩個進行xor(異或)運算,得到的結果最大是多少?
輸入格式
第一行輸入乙個整數n。
第二行輸入n個整數a
1'>a1
a1~a
n'>an
an。輸出格式
輸出乙個整數表示答案。
資料範圍1≤
n≤105
'>1≤n≤105
1≤n≤105,0≤
ai<231
'>0≤ai<231
0≤ai<231
輸入樣例:
3
1 2 3
輸出樣例:3
思路:異或為不進製加法。
找出兩個個數字的異或最大值,那麼每個數字可以用二進位制表示。用tire樹存放個數字的二進位制。
#include usingnamespace
std;
const
int maxn= 1e5+10
;const
int maxm=maxn*31
;int
a[maxn];
int tree[maxm][2
],idx;
void tireinsert(intx)}
int tirefind(int
x)
else
}return
res;
}int
main()
cout
}
AcWing 143 最大異或對
題目描述 在給定的n個整數a1,a2 an中選出兩個進行xor 異或 運算,得到的結果最大是多少?輸入格式 第一行輸入乙個整數n。第二行輸入n個整數a1 an。輸出格式 輸出乙個整數表示答案。資料範圍 1 n 10 5,0 ai 2 31 輸入樣例 3 1 2 3輸出樣例 3分析 本題要求我們從n個...
Acwing143 最大異或對
用乙個tire樹來存下n個數的二進位制形式的01串,串的長度是31,因為每個數最多為2 31所以,取31,然後根據異或的特性,列舉一下所有的數,取這個數的反碼,去樹中尋找盡可能和反碼向同的路徑,並且記錄下路徑過程的異或值即可 include include include using namespa...
acwing 143 最大異或對
題面 在給定的n個整數a1,a2 an a1,a2 an a1,a2 an中選出兩個進行xor 異或 運算,得到的結果最大是多少?輸入格式 第一行輸入乙個整數n。第二行輸入n個整數a 1 a1 a1 a n an an。輸出格式 輸出乙個整數表示答案。資料範圍1 n 105 1 n 105 1 n ...