int son[N * 30][2]; int idx = 0; int num[N * 30]; void insert(int x) { int p=0; for(int i=20;~i;i--) { int u=x>>i&1; if(!son[p][u])son[p][u]=++idx; p=son[p][u]; num[p] ++; } } void del(int x) { int p=0; for(int i=20;~i;i--) { int u=x>>i&1; p=son[p][u]; num[p] --; } } int query(int x) { int p=0,res=0; for(int i=20;~i;i--) { int u=x>>i&1; if(son[p][!u] && num[son[p][!u]]) { res+=1<<i; p=son[p][!u]; } else p=son[p][u]; } return res; } 有没有大佬帮忙看看这种写法的删除有问题吗
点赞 5

相关推荐

牛客网
牛客企业服务