1≤n≤1e5,
0≤ai<2^31
輸入樣例:
31 2 3
輸出樣例:
3思路:顯然暴力是不能解決問題的,所以我們可以利用異或的性質在第二重迴圈進行優化。我們用trie存一下所有數的值,在遍歷a查詢的時候就在trie上找到和~a[i]最接近的數即可。
**實現:
#include
using
namespace std;
const
int n =
1e5+
5, m =
3e6;
int n;
int son[m][2
], idx;
int a[n]
;void
insert
(int x)
}//找到乙個最接近~x的數
intfind
(int x)
//沒有就貢獻乙個0可省略
else p = son[p]
[t];
}return ans;
}int
main()
int ans =0;
for(
int i =
0; i < n; i ++
) ans =
max(ans,
find
(a[i]))
; cout << ans << endl;
return0;
}
最大異或對(Trie)
在給定的n個整數a1,a2 an中選出兩個進行xor 異或 運算,得到的結果最大是多少?輸入格式 第一行輸入乙個整數n。第二行輸入n個整數a1 an。輸出格式 輸出乙個整數表示答案。資料範圍 1 n 105,0 ai 2 31 輸入樣例 3 1 2 3輸出樣例 3思路 用trie 字典樹 建樹時,根...
AcWing 143 最大異或對(Trie)
題目大意 從n個數中選出兩個數異或,求最大的異或值。1 n 105 1 n 10 50 ai 231 0 ai 2 311 n 105 0 a i 231 題解 1 n 105 0 a i 231 首先考慮暴力的寫法 for int i 1 i n i 考慮用資料結構優化,對於每個列舉到的數,找到與...
最大異或對
acwing 143.最大異或對 在給定的n個整數a1,a2 an中選出兩個進行xor 異或 運算,得到的結果最大是多少?輸入格式第一行輸入乙個整數n。第二行輸入n個整數a1 an。輸出格式輸出乙個整數表示答案。資料範圍1 n 105,0 ai 231 輸入樣例 3 1 2 3 輸出樣例 題解 異或...