用字典树思想来做。对于一个数,给出他的二进制,然后更具二进制建立字典树,然后每次询问的时候的数也给出二进制,如果当前为1,那就向0走,为0,向1走。

#include<stdio.h>
#include<string.h>
const int maxn = ;
struct node
{
int flag;
int num;
node *next[];
void init()
{
next[]=next[]=NULL;
num=;
flag=-;
}
};
node *trie,*p=NULL;
int a[maxn],n,m;
void init()
{
trie=new node;
trie->init();
}
void add(int x)
{
int i,j;
for(i=; i>=; i--)
{
int t;
if(x&(<<i))t=;
else t=;
if(t)
{
if(p->next[t]==NULL)
{
node *q=new node;
q->init();
p->next[t]=q;
}
p=p->next[t];
p->num++;
}
else
{
if(p->next[t]==NULL)
{
node *q=new node;
q->init();
p->next[t]=q;
}
p=p->next[t];
p->num++;
}
}
p->flag=x;
}
int query(int x)
{
int ret=;
int i,j;
for(i=; i>=; i--)
{
int t;
if(x&(<<i))
t=;
else t=;
if(t)
{
if(p->next[]!=NULL)
p=p->next[];
else p=p->next[];
}
else
{
if(p->next[]!=NULL)
p=p->next[];
else p=p->next[];
}
}
return p->flag;
}
void Del(node *trie)
{
for(int i=;i<=;i++)
{
if(trie->next[i]!=NULL)
Del(trie->next[i]);
}
delete trie;
}
int main()
{
int i,t,j,ff=;
scanf("%d",&t);
while(t--)
{
init();
scanf("%d%d",&n,&m);
for(i=; i<n; i++)
{
p=trie;
scanf("%d",&a[i]);
add(a[i]);
}
printf("Case #%d:\n",++ff);
while(m--)
{
int x;
p=trie;
scanf("%d",&x);
printf("%d\n",query(x));
}
Del(trie);
}
}

hdu4825 字典树 XOR的更多相关文章

  1. Xor Sum(HDU4825 + 字典树)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4825 题目: 题意: 先给你n个数,再进行q次查询,每次查询数s与原来给的n个数异或和最大的数. 思 ...

  2. hdu5536 字典树xor

    一想到xor还要求最大类似的题,字典树效率高. 此代码c++ TLE. #include<stdio.h> #include<string.h> ; struct node { ...

  3. HDU4825(字典树+贪心)

    Xor Sum Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 132768/132768 K (Java/Others)Total S ...

  4. HDU--4825 Xor Sum (字典树)

    题目链接:HDU--4825 Xor Sum mmp sb字典树因为数组开的不够大一直wa 不是报的 re!!! 找了一下午bug 草 把每个数转化成二进制存字典树里面 然后尽量取与x这个位置上不相同 ...

  5. HDU4825 Xor Sum(字典树解决最大异或问题)

    Zeus 和 Prometheus 做了一个游戏,Prometheus 给 Zeus 一个集合,集合中包含了N个正整数,随后 Prometheus 将向 Zeus 发起M次询问,每次询问中包含一个正整 ...

  6. HDU-4825 Xor Sum,字典树好题!

    Xor Sum 一遍A了之后大呼一声好(keng)题!debug了两小时~~~~百度之星资格赛,可以. 题意:给你一个n个元素的数组,m次查询,每次输入一个数k要求从数组中找到一个数与k异或值最大,输 ...

  7. [Hdu4825]Xor Sum(01字典树)

    Description Zeus 和 Prometheus 做了一个游戏,Prometheus 给 Zeus 一个集合,集合中包含了N个正整数,随后 Prometheus 将向 Zeus 发起M次询问 ...

  8. HDU-4825 Xor Sum(字典树求异或最大值)

    题目链接:点此 我的github地址:点此 Problem Description Zeus 和 Prometheus 做了一个游戏,Prometheus 给 Zeus 一个集合,集合中包含了N个正整 ...

  9. HDU 4825 Xor Sum(经典01字典树+贪心)

    Xor Sum Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 132768/132768 K (Java/Others) Total ...

随机推荐

  1. ADS(一)

    LC匹配 已知输入输出阻抗,设计LC匹配电路使输入输出阻抗共轭匹配 Step1 Step2 Result1 Result2     微带线单枝匹配 已知源和负载阻抗,求微带线单枝匹配电路 Step1 ...

  2. poj1274 The Perfect Stall (二分最大匹配)

    Description Farmer John completed his new barn just last week, complete with all the latest milking ...

  3. Android网络之数据解析----使用Google Gson解析Json数据

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  4. AC日记——斗地主(dfs)

    题目描述 牛牛最近迷上了一种叫斗地主的扑克游戏.斗地主是一种使用黑桃.红心.梅花.方片的A到K加上大小王的共54张牌来进行的扑克牌游戏.在斗地主中,牌的大小关系根据牌的数码表示如下:3<4< ...

  5. linux下查找某个目录下包含某个字符串的文件

    有时候要找一些字符串,但是又不知道在哪个文件,只记得一些字符串 那么如何在linux下寻找包含某段文字的文件呢? 强大的find命令可以帮你完成不可能的任务. 比如我只记得我的程序里包含唯一的字符串“ ...

  6. 关于JAVA应用中文字体显示小方框的问题解决

    最近碰到linux下jboss应用中中文字体显示为小方框: “在JRE 5以上的java环境中,java会自动加载$JAVA_HOME/jre/lib/fonts目录下的字体.链接或复制宋体或微软雅黑 ...

  7. 爆炸吧 js dom ---------> boom

    dom-> html css 事件 元素 eventlistener HTML 事件的例子: 当用户点击鼠标时 当网页已加载时 当图像已加载时 当鼠标移动到元素上时 当输入字段被改变时 当提交 ...

  8. kvm虚拟化管理平台WebVirtMgr部署-完整记录(安装ubuntu虚拟机)-(5)

    之前介绍了在webvirtmgr平台下创建centos,windows server 2008的虚拟机,今天说下创建ubuntu虚拟机的过程. (1)首先下载ubuntu16.04的iso镜像放到/u ...

  9. UICollectionView移动

    collectionView在iOS9中发布了一个可以移动cell的新特性,实现如下: 1.创建collectionView并设置代理 - (UICollectionView *)collection ...

  10. 【转】【Thread】ReaderWriterLock 读写锁

    ReaderWriterLock类 通常来讲,一个类型的实例对于并行的读操作是线程安全的,但是并行地更新操作则不是(并行地读和更新也不是). 这对于资源也是一样的,比如一个文件.当保护类型的实例安全时 ...