AcWing 143. 最大异或对

2020-12-24 23:26

阅读:459

标签:c++   进制   枚举   最大   for   ace   异或   ++   print   

AcWing 143. 最大异或对


/*暴力做法
int res=0;
for(int i=0;i
using namespace std;
const int N=1e6+10,M=31*N;
int n;
int a[N];
int son[M][2],idx;
void insert(int x){
    int p=0;
    for(int i=30;i>=0;i--){
        int u=x >> i &1;//取出x二进制的第i位数
        if(!son[p][u]) son[p][u]=++idx;
        p=son[p][u];
    }
}
int query(int x){
    int p=0,res=0;
    for(int i=30;i>=0;i--){
        int u=x >> i &1;//取出x二进制的第i位数
        if(son[p][!u]){
            p=son[p][!u];
            res=res*2+!u;
        }
        else{
            p=son[p][u];
            res=res*2+u;
        } 
    }
    return res;
}
int main(){
    scanf("%d",&n);
    for(int i=0;i

AcWing 143. 最大异或对

标签:c++   进制   枚举   最大   for   ace   异或   ++   print   

原文地址:https://www.cnblogs.com/wiseXu/p/13403048.html

上一篇:AcWing 240. 食物链

下一篇:C#变量与常量


评论


亲,登录后才可以留言!