acwing 143 最大異或對

2022-05-01 17:57:09 字數 1069 閱讀 5377

題面:

在給定的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

題解:

異或性質+字首+字典樹

這道題目很難想到是字典樹,如果不是放在字典樹單元的話.

其實來說,乙個整數,是可以轉化成為乙個32位的二進位制數,而也就可以變成長度為32位的二進位制字串.

既然如此話,那麼我們可以這麼做,每一次檢索的時候,我們都走與當前aiai這一位相反的位置走,也就是讓xor值最大,如果說沒有路可以走的話,那麼就走相同的路.

**:

#include#include

#include

using

namespace

std;

int a[100010

];int son[3000100][2

],idx;

void insert(intx)}

int query(int

x)

else

p=son[p][s];

}return

res;

}int

main()

int res=0

;

for(int i=0;imax(res,query(a[i]));

cout

return0;

}

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...

Acwing143 最大異或對

在給定的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...