hdu4825 字典树 XOR
用字典树思想来做。对于一个数,给出他的二进制,然后更具二进制建立字典树,然后每次询问的时候的数也给出二进制,如果当前为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的更多相关文章
- Xor Sum(HDU4825 + 字典树)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4825 题目: 题意: 先给你n个数,再进行q次查询,每次查询数s与原来给的n个数异或和最大的数. 思 ...
- hdu5536 字典树xor
一想到xor还要求最大类似的题,字典树效率高. 此代码c++ TLE. #include<stdio.h> #include<string.h> ; struct node { ...
- HDU4825(字典树+贪心)
Xor Sum Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 132768/132768 K (Java/Others)Total S ...
- HDU--4825 Xor Sum (字典树)
题目链接:HDU--4825 Xor Sum mmp sb字典树因为数组开的不够大一直wa 不是报的 re!!! 找了一下午bug 草 把每个数转化成二进制存字典树里面 然后尽量取与x这个位置上不相同 ...
- HDU4825 Xor Sum(字典树解决最大异或问题)
Zeus 和 Prometheus 做了一个游戏,Prometheus 给 Zeus 一个集合,集合中包含了N个正整数,随后 Prometheus 将向 Zeus 发起M次询问,每次询问中包含一个正整 ...
- HDU-4825 Xor Sum,字典树好题!
Xor Sum 一遍A了之后大呼一声好(keng)题!debug了两小时~~~~百度之星资格赛,可以. 题意:给你一个n个元素的数组,m次查询,每次输入一个数k要求从数组中找到一个数与k异或值最大,输 ...
- [Hdu4825]Xor Sum(01字典树)
Description Zeus 和 Prometheus 做了一个游戏,Prometheus 给 Zeus 一个集合,集合中包含了N个正整数,随后 Prometheus 将向 Zeus 发起M次询问 ...
- HDU-4825 Xor Sum(字典树求异或最大值)
题目链接:点此 我的github地址:点此 Problem Description Zeus 和 Prometheus 做了一个游戏,Prometheus 给 Zeus 一个集合,集合中包含了N个正整 ...
- HDU 4825 Xor Sum(经典01字典树+贪心)
Xor Sum Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 132768/132768 K (Java/Others) Total ...
随机推荐
- ADS(一)
LC匹配 已知输入输出阻抗,设计LC匹配电路使输入输出阻抗共轭匹配 Step1 Step2 Result1 Result2 微带线单枝匹配 已知源和负载阻抗,求微带线单枝匹配电路 Step1 ...
- poj1274 The Perfect Stall (二分最大匹配)
Description Farmer John completed his new barn just last week, complete with all the latest milking ...
- Android网络之数据解析----使用Google Gson解析Json数据
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...
- AC日记——斗地主(dfs)
题目描述 牛牛最近迷上了一种叫斗地主的扑克游戏.斗地主是一种使用黑桃.红心.梅花.方片的A到K加上大小王的共54张牌来进行的扑克牌游戏.在斗地主中,牌的大小关系根据牌的数码表示如下:3<4< ...
- linux下查找某个目录下包含某个字符串的文件
有时候要找一些字符串,但是又不知道在哪个文件,只记得一些字符串 那么如何在linux下寻找包含某段文字的文件呢? 强大的find命令可以帮你完成不可能的任务. 比如我只记得我的程序里包含唯一的字符串“ ...
- 关于JAVA应用中文字体显示小方框的问题解决
最近碰到linux下jboss应用中中文字体显示为小方框: “在JRE 5以上的java环境中,java会自动加载$JAVA_HOME/jre/lib/fonts目录下的字体.链接或复制宋体或微软雅黑 ...
- 爆炸吧 js dom ---------> boom
dom-> html css 事件 元素 eventlistener HTML 事件的例子: 当用户点击鼠标时 当网页已加载时 当图像已加载时 当鼠标移动到元素上时 当输入字段被改变时 当提交 ...
- kvm虚拟化管理平台WebVirtMgr部署-完整记录(安装ubuntu虚拟机)-(5)
之前介绍了在webvirtmgr平台下创建centos,windows server 2008的虚拟机,今天说下创建ubuntu虚拟机的过程. (1)首先下载ubuntu16.04的iso镜像放到/u ...
- UICollectionView移动
collectionView在iOS9中发布了一个可以移动cell的新特性,实现如下: 1.创建collectionView并设置代理 - (UICollectionView *)collection ...
- 【转】【Thread】ReaderWriterLock 读写锁
ReaderWriterLock类 通常来讲,一个类型的实例对于并行的读操作是线程安全的,但是并行地更新操作则不是(并行地读和更新也不是). 这对于资源也是一样的,比如一个文件.当保护类型的实例安全时 ...