Trie 最大異或對

2021-10-02 09:16:51 字數 843 閱讀 1501

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 輸出樣例 題解 異或...