The XOR Largest Pair 解題報告

2021-09-19 09:09:53 字數 714 閱讀 7127

描述

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

輸入格式

第一行乙個整數n,第二行n個整數a1~an。

輸出格式

乙個整數表示答案。

樣例輸入

31 2 3

樣例輸出

資料範圍與約定

對於100%的資料: n<=10^5, 0<=ai<2^31。

解題思路:

由於只要求在n個數中找到兩個數異或的最大值,所以我們目標就是找到兩個數,他們的對應二進位制位不同的個數最多。所以問題就變成了給定乙個數,去尋找另乙個和它匹配時異或值最大的數。所以我們可以採用trie,我們將n個數按照二進位制31位插入到字典樹中,每次對於乙個數x,我們按照其二進位制位搜尋路徑,優先搜尋相反位。

注意事項:

**示例:

#include#includeconst int maxn = 100100;

int t[maxn*32][3],tot = 1;

void insert(int x)

}int search(int x)else p = t[p][ch];

}return ans;

}int main()

printf("%d\n",ans);

return 0;

}

USACO Hamming Codes 解題報告

資料小,暴力搜尋可以搞定。但是推薦使用dfs,每個節點 數 有取與不取兩個分支。注意 0是必須出現的。證明如下 最終得到的結果序列中,0是必須出現的,證明如下 如果存在另乙個滿足要求的結果序列s 其最小值為a1 n 0,那麼序列s s n 是滿足條件的最小解,且首元素為0 id xpli1 prog...

USACO Closed Fences 解題報告

幾何題看著就很有畏懼感。這裡用的是最 的演算法,時間複雜度應該在n 2。還沒看別人的解題報告,不過我猜nlogn的解法是有的。比如判斷乙個fence是不是valid的時候,這裡將所有的線段兩兩比較,看是否相交。但是有個叫line sweep的演算法,可以在nlogn的時間複雜度內完成。既然accep...

Wiggle Subsequence解題報告

這道題和最長子序列,divisible subset題目類似,都可以用o n2 的時間複雜度完成。可以想象,對於第i個數,dp i dp j 1,當且僅當dp j 1 dp i 而且nums j 和nums i 的差值和j所處位置的差值符號相反。所以,如下 class solution if dp ...