143. 最大异或对
模板:tire 復(fù)雜度:O(nlogn)
143. 最大異或?qū)?/p>
#include <iostream>
#include <algorithm>
using namespace std;
const int maxn = 100010, M = 31 * maxn;
int ch[maxn];
int n;
int son[M][2], idx = 0;
void insert(int x)
{int p = 0;for (int i = 30; ~i; i--){int u = x >> i & 1;if (!son[p][u])son[p][u] = ++idx;//如果沒有就創(chuàng)建p = son[p][u];}
}
int search(int x)
{int p = 0;int ret = 0;for (int i=30;~i;i--){int u = x>>i&1;//二進(jìn)制上某位是0還是1 if (!son[p][!u])//如果他的兒子沒有不一樣的{p = son[p][u];ret = ret*2+u;}else//有不一樣的{p = son[p][!u];ret = ret*2+!u;}}ret = ret^x;return ret;
}
int main()
{int n;cin >> n;for (int i = 0; i < n; i++){cin >> ch[i];insert(ch[i]);}int res = 0;for (int i = 0; i < n; i++){res = max(res, search(ch[i]));}cout << res;
}
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎
總結(jié)
以上是生活随笔為你收集整理的143. 最大异或对的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 打印机更换感光鼓单元k_打印机换硒鼓步骤
- 下一篇: Vue导出excel表格设置样式的解决方