最大異或對 tire樹

2021-10-02 10:00:11 字數 585 閱讀 7096

在給定的n個整數a1,a2……an中選出兩個進行xor(異或)運算,得到的結果最大是多少?

輸入格式

第一行輸入乙個整數n。

第二行輸入n個整數a1~an。

輸出格式

輸出乙個整數表示答案。

資料範圍

1≤n≤105,

0≤ai<231

輸入樣例:

31 2 3

輸出樣例:

3直接暴力的複雜度是n²肯定是要超時的 ,知道要用字典樹那麼就把每個數化成二進位制儲存啦,因為是異或運算,相同為0不同為1 ,所以在每個節點要優先向相反位走,相反位沒路了再向相同為走,為了實現最大化要從高位向低位走(wa了好幾次!!!)

#include#includeusing namespace std;

const int maxn=1e5+100;

int ed[maxn*32][5],idx=1;//理論上乙個數有32位 實際用不到maxn*32

void insert(int x)

}int query(int x)

cout

}

最大異或對 字典樹

在給定的n個整數a1,a2 an中選出兩個進行xor 異或 運算,得到的結果最大是多少?輸入格式 第一行輸入乙個整數n。第二行輸入n個整數a1 an。輸出格式 輸出乙個整數表示答案。資料範圍 1 n 105,0 ai 231 輸入樣例 31 2 3 輸出樣例 3 基於貪心的思想 異或是一種不進製加法...

字典樹 最大異或對

分析程式 最大異或對,就是給出一堆數,然後在這一堆數中選擇兩個數,使得異或後結果最大。所涉及到的知識點有 字典樹,二進位制的思想 這樣寫不出意外是會超時的,因為這樣看的話,他的時間複雜度是o n n 然後題中給出的資料是10的五次方。所以說這樣的話,需要執行10的十次方次操作,而機器在一秒中只能執行...

最大異或對 字典樹)

143.最大異或對 在給定的n個整數a1,a2 an a1,a2 an 中選出兩個進行xor 異或 運算,得到的結果最大是多少?輸入格式 第一行輸入乙個整數n。第二行輸入n個整數a 1 a1 an an 輸出格式 輸出乙個整數表示答案。資料範圍1 n 105 1 n 10 5,0 ai 231 0 ...