1578 異或最大值(思路)

2022-05-27 18:22:37 字數 689 閱讀 7547

有兩個正整數n,k(k <= n <= 10000),1到n中至多任取k個數,求這些數異或能得到的最大值  

第一行乙個整數t,表示t組輸入,t <= 1000

接下來t行,每行兩個整數用空格分隔,表示n,k。

每組資料輸出乙個整數佔一行,表示異或能得到的最大值
複製

1

4 1

4
思路:對於k==1時不能異或只能取最大的自己,對於k>1一定存在乙個數小於n並能使得n與其或能將n二進位制位表述的0都變為1

(k >= 2,只需選n和n的反碼,反碼必定小於n。答案就是n的二進位制位全變為1)

參考**;

#include#include#include#include#include#include#includeconst double pi = acos(-1);

#define n 10005

using namespace std;

int main()

cout《學長**:

//orz

#include#define ll long long

int main()

}return 0;

}

CSU 1216(異或最大值)

csu 1216 題目簡述 經典題目,求乙個陣列中兩個數異或運算的最大值。題目極其簡單,但是要求的複雜度需要達到o n log n 還是比較難的。解題思路 總的思路就是構建一棵0 1字典樹,然後乙個數讓查詢乙個與其異或結果最大的數的效率達到o log n 這裡因為異或的特殊性質,可以使用貪心法則來實...

csu 1216 異或最大值

time limit 2 sec memory limit 128 mb submitted 836 solved 300 給定一些數,求這些數中兩個數的異或值最大的那個值 多組資料。第一行為數字個數n,1 n 10 5。接下來n行每行乙個32位有符號非負整數。任意兩數最大異或值 337 9 14 ...

任意個數異或最大值(DFS)

問題 在n 10個數裡面選任意個數,使得他們的xor值最大 思路1 最簡單的辦法是o 2 n2 n 2n 去暴力列舉 思路2 dfs 對於這個問題,其實可以看成n個階段,每個階段我對於每個數都有選與不選兩種選擇,那麼我們dfs不妨就寫成dfs int step,int value 表示我們現在正在考...