显然是要建一棵0、1树 事实上非常easy就是二叉树,仅仅只是为了操作简便,即程序的速度,所以就採用静态树,即不动态分配内存,使用较大的全局数组。0是根节点
#include<cstdio>
#include<algorithm>
#include<cstring> using namespace std; int node[3011111][2];
int tag,m,n,cas=0,T;
long long one[64],allone,tmp;
//0/1树的加数据操作,添加�一个32的数
//当中假设当前位是0,则加左儿子,否则加右儿子,即这棵树中左儿子表示0,右儿子表示1
void add(long long temp) // l 0 r 1
{
int rt=0,t;//rt为当前节点
for(int i=31;i>=0; i--)
{
t=temp&one[i]?1:0;//取得当前位是0还是1
if(node[rt][t]==-1)//假设没有相应的儿子,就添加�给它分配一个数组的下标
node[rt][t]=++tag;
rt=node[rt][t];//迭代运行
}
} long long lookfor(long long temp)//查找答案
{
int rt=0,t;
long long ans=0;
for(int i=31; i>=0; i--)
{
t=temp&one[i]?1:0;// temp&one[i] 1
if(node[rt][t]==-1) t=t^1;//假设没有与当前符合的儿子,则选择相反的儿子,显然这个儿子一定存在
rt=node[rt][t];//迭代当前节点
ans=ans*2+t;//计算出查找的值
}
return ans;
} int main()
{
//freopen("in.txt","r",stdin);
// freopen("out.txt","w",stdout);
one[0]=1;
for(int i=1; i<60; i++)//得到2的幂次的数组
one[i]=one[i-1]<<1; allone=one[32]-1;//0xffffffff 用来异或
//printf("one %I64d\n",allone);
scanf("%d",&T);
while(T--)
{
tag=0;//注意这个初始化,
memset(node,-1,sizeof(node));
scanf("%d%d",&m,&n);
for(int i=0; i<m; i++)
{
scanf("%I64d",&tmp);
add(tmp);
}
printf("Case #%d:\n",++cas);
for(int i=0; i<n; i++)
{
scanf("%I64d",&tmp);//tmp为要查找的值
tmp=tmp^allone;//tmp变成和原来的它异或值最大的数,而我们就是要查找,最接近它的一个数m,接近是,数值和二进制的形式接近
printf("%I64d\n",lookfor(tmp));
}
}
return 0;
}


Zeus 和 Prometheus 做了一个游戏,Prometheus 给 Zeus 一个集合,集合中包括了N个正整数,随后 Prometheus 将向 Zeus 发起M次询问,每次询问中包括一个正整数 S ,之后 Zeus 须要在集合其中找出一个正整数 K ,使得 K 与 S 的异或结果最大。Prometheus 为了让 Zeus 看到人类的伟大,随即允许 Zeus 能够向人类求助。你能证明人类的智慧么?

 
Input
输入包括若干组測试数据,每组測试数据包括若干行。

输入的第一行是一个整数T(T < 10),表示共同拥有T组数据。

每组数据的第一行输入两个正整数N,M(<1=N,M<=100000),接下来一行,包括N个正整数,代表 Zeus 的获得的集合,之后M行,每行一个正整数S,代表 Prometheus 询问的正整数。全部正整数均不超过2^32。
 
Output
对于每组数据,首先须要输出单独一行”Case #?:”,当中问号处应填入当前的数据组数,组数从1開始计算。

对于每一个询问,输出一个正整数K,使得K与S异或值最大。
 
Sample Input
2
3 2
3 4 5
1
5
4 1
4 6 5 6
3
 
Sample Output
Case #1:
4
3
Case #2:
4
显然是要建一棵0、1树 事实上非常easy就是二叉树,仅仅只是为了操作简便,即程序的速度,所以就採用静态树,即不动态分配内存,使用较大的全局数组。

百度之星资格赛,hdu 4825 XOR SUM的更多相关文章

  1. hdu 4825 Xor Sum(trie+贪心)

    hdu 4825 Xor Sum(trie+贪心) 刚刚补了前天的CF的D题再做这题感觉轻松了许多.简直一个模子啊...跑树上异或x最大值.贪心地让某位的值与x对应位的值不同即可. #include ...

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

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

  3. HDU 4825 Xor Sum 字典树+位运算

    点击打开链接 Xor Sum Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 132768/132768 K (Java/Others) ...

  4. hdu 4825 Xor Sum trie树

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

  5. hdu 4825 Xor Sum (01 Trie)

    链接:http://acm.hdu.edu.cn/showproblem.php?pid=4825 题面: Xor Sum Time Limit: 2000/1000 MS (Java/Others) ...

  6. 2014百度之星第三题Xor Sum(字典树+异或运算)

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

  7. HDU 4825 Xor Sum (trie树处理异或)

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

  8. hdu 4825 xor sum(字典树+位运算)

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

  9. hdu 4825 Xor Sum (建树) 2014年百度之星程序设计大赛 - 资格赛 1003

    题目 题意:给n个数,m次询问,每次给一个数,求这n个数里与这个数 异或 最大的数. 思路:建一个类似字典数的数,把每一个数用 32位的0或者1 表示,查找从高位向底位找,优先找不同的,如果没有不同的 ...

随机推荐

  1. poj 3279 Fliptile

    题意:一个n * m的棋盘,0或1,每次改变一个格子时同时改变上下左右的格子,问用最少次数将棋盘全变成0的策略. 题解:用二进制压缩第一行更改的状态,之后遍历棋盘,如果当前格子为1则改变下方的格子,记 ...

  2. java中接口与多重继承的关系

    在Java语言中, abstract class 和interface 是支持抽象类定义的两种机制.正是由于这两种机制的存在,才赋予了Java强大的 面向对象能力.abstract class和int ...

  3. ajax post方法

    定义和用法 post() 方法通过 HTTP POST 请求从服务器载入数据. 语法 jQuery.post(url,data,success(data, textStatus, jqXHR),dat ...

  4. HDU 1011-Starship Troopers(树形背包)

    题意: 有n个洞,连接像一棵树,每个包含一定数量的怪和价值,给你m个士兵,每个士兵能打20个怪,杀完一个洞的怪可得该洞的价值才可继续打相连的下面的洞(每个士兵只能打一个洞),求获得的最大价值. 分析: ...

  5. Codeforces 611C New Year and Domino DP+容斥

    "#"代表不能放骨牌的地方,"."是可以放 500*500的矩阵,q次询问 开两个dp数组,a,b,a统计横着放的方案数,b表示竖着放,然后询问时O(1)的,容 ...

  6. Testlink & Redmine组合拳演练

    环境:Ubuntu 14.04LTS 一.部署testlink 查看已安装软件: dpkg -l *apache* (apache2.4.7) dpkg -l *php* (未安装) dpkg -l ...

  7. [GRYZ2015]阿Q的停车场

    题目描述 刚拿到驾照的KJ 总喜欢开着车到处兜风,玩完了再把车停到阿Q的停车场里,虽然她对自己停车的水平很有信心,但她还是不放心其他人的停车水平,尤其是Kelukin.于是,她每次都把自己的爱车停在距 ...

  8. 【DOM】1.DOM优化

    1.JS include :DOM BOM ECMA 2.Browser 分别独立实现dom & JS as if two isolated islands 3.JS操作DOM from th ...

  9. python网络编程(六)---web客户端访问

    1.获取web页面 urllib2 支持任何协议的工作---不仅仅是http,还包括FTP,Gopher. import urllib2 req=urllib2.Request('http://www ...

  10. BestCoder Round #68 (div.2) 1002 tree

    题意:给你一个图,每条边权值0或1,问每个点周围最近的点有多少个? 思路:并查集找权值为0的点构成的连通块. #include<stdio.h> #include<string.h& ...