求n個數裡面,求兩兩異或的最大值
直接來肯定會超時
既然要異或最大值,那麼兩個數的二進位制肯定是正好錯開為好、、、為了能快速找到錯開的數,確實有點難想到,用字典樹,按二進位制數插入,再乙個乙個在字典樹裡面找離他最遠的即可。
#include #include #include using namespace std;int n;
int a[100010];
int ch[20*100010][2],cnt;
int val[20*100010];
void inserts(int x)
else rt=ch[rt][k];
}//cout
}int main()
int ans=0;
for (int i=0;iprintf("%d\n",ans);
}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 ...
CSU 1216 異或最大值
題目簡述 經典題目,求乙個陣列中兩個數異或運算的最大值。題目極其簡單,但是要求的複雜度需要達到o n log n 還是比較難的。解題思路 總的思路就是構建一棵0 1字典樹,然後乙個數讓查詢乙個與其異或結果最大的數的效率達到o log n 這裡因為異或的特殊性質,可以使用貪心法則來實現。1 0 1字典...