Xor Sum HDU - 4825

#include<bits/stdc++.h>
using namespace std ;
const int N=10000000;
int a[N],idx,son[N][2];
//把每个数插入到trie树中 
void insert(int x)
{
    //从头开始插入 
    int p=0;
    for(int i=30;i>=0;i--)
    {
        //取出当前位 
        int u=x>>i&1;
        //如果之前不存在的话 
        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;
        //如果存在不同的,就走不同的 
        if(son[p][!u])
        {
            res=res*2+!u;
            p=son[p][!u];
        }
        else
        {
            res=res*2+u;
            p=son[p][u];
        }
    }
    return res;
}
int main()
{
    int t;
	scanf("%d",&t);
	int cnt=1;
	while(t--)
	{
		idx=0;
		memset(a,0,sizeof a);
		for(int i=0;i<=N;i++)
			son[i][0]=son[i][1]=0;
		int n,m;
		scanf("%d%d",&n,&m);
		for(int i=1;i<=n;i++)
		{
			scanf("%d",&a[i]);
			insert(a[i]);
		}
		printf("Case #%d:\n",cnt);
		cnt++;
		while(m--)
		{
			int x;
			scanf("%d",&x);
			int t=query(x);
			int res=x^t;
			printf("%d\n",t);
		}
	} 
    return 0;
}
posted @   晴屿  阅读(88)  评论(0编辑  收藏  举报
(评论功能已被禁用)
编辑推荐:
· DeepSeek 解答了困扰我五年的技术问题
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 用 C# 插值字符串处理器写一个 sscanf
· Java 中堆内存和栈内存上的数据分布和特点
· 开发中对象命名的一点思考
阅读排行:
· DeepSeek 解答了困扰我五年的技术问题。时代确实变了!
· PPT革命!DeepSeek+Kimi=N小时工作5分钟完成?
· What?废柴, 还在本地部署DeepSeek吗?Are you kidding?
· DeepSeek企业级部署实战指南:从服务器选型到Dify私有化落地
· 程序员转型AI:行业分析
点击右上角即可分享
微信分享提示