Xor Sum

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 132768/132768 K (Java/Others)
Total Submission(s): 4198    Accepted Submission(s): 1845

Problem Description

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

解析:01字典树

#include<bits/stdc++.h>
using namespace std;
#define MAXN 100005
#define ll long long
int n,m;
int trie[32*MAXN][2];
ll val[32*MAXN];
int tot;
void insert(ll d)
{int root=0;for(int i=32;i>=0;i--){int id=(d>>i)&1;//获得这一个bit位的值if(!trie[root][id]) trie[root][id]=++tot;root=trie[root][id];}val[root]=d;
}
ll query(ll d)
{int root=0;for(int i=32;i>=0;i--){int id=(d>>i)&1;if(trie[root][id^1]) root=trie[root][id^1];else root=trie[root][id];}return val[root];
}
int main()
{int cas;scanf("%d",&cas);for(int tt=1;tt<=cas;tt++){scanf("%d%d",&n,&m);memset(trie,0,sizeof trie);for(int i=0;i<n;i++){int d;scanf("%d",&d);insert(d);}printf("Case #%d:\n",tt);for(int i=0;i<m;i++){ll d;scanf("%lld",&d);printf("%lld\n",query(d));}}return 0;
}

hdu-4825(01字典树)相关推荐

  1. HDU 4825:Print Article(01字典树)

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

  2. HDU 5536 Chip Factory (01字典树)

    传送门:HDU 5536 题目大意: 在一个数组中找出 (s[i]+s[j])^s[k] 最大的值,其中 i.j.k 各不相同. 前至技能:01字典树详解. 思路: 01字典树模板可以解决查找与 x ...

  3. 字典树,01字典树,可持续化01字典树(总结+例题)

    目录 字典树 01字典树 字典树例题: power oj 2390: 查单词 HDU 1671 Phone List HDU 1004Let the Balloon Rise HDU 1075 Wha ...

  4. 字典树 01字典树【数据结构】

    题目1:字典树 HDU 1251 统计难题 Problem Description Ignatius最近遇到一个难题,老师交给他很多单词(只有小写字母组成,不会有重复的单词出现),现在老师要他统计出以 ...

  5. 字典树与01字典树详解

    [镇楼]   不满足于粗浅的表面了解字典树吗,今天!由我给大家带来!字典树与01字典树的解析!! 目录 [引入] [字典树] [01字典树] [引用参考] [引入] 字典是干啥的?查找字的.那么字典树 ...

  6. 字典树01字典树专题对字典树的理解

    对于字典树和01字典树的一点理解: 首先,字典树建树的过程就是按照每个数的前缀来的,如果你要存储一个全小写字母字符串,那么这个树每一个节点最多26个节点,这样的话,如果要找特定的单词的话,按照建树的方 ...

  7. hdu5296 01字典树

    根据二进制建一棵01字典树,每个节点的答案等于左节点0的个数 * 右节点1的个数 * 2,遍历整棵树就能得到答案. AC代码: #include<cstdio> using namespa ...

  8. Beautiful Subarrays (01字典树 瞎搞)

    题意: 题解: 一看问的是子序列,并且还是异或. 首先想到01字典树,再一看让你求子序列的个数,大致是想让你把这个序列进行前缀异或处理后然后再01字典树上进行操作吧. 假设01字典树往左边是0右边是1 ...

  9. 奶牛异或(01字典树)

    题意: 让你找一个连续区间异或和最大,如果有相同的,则输出断点较小的. 题解: 01字典树,利用前缀和的思想进行求解,我们在插入前缀的同时,也在不断的更新最大值. 我们查询当前 二进制字符串与已经插入 ...

最新文章

  1. 易语言 精易模块 操作json数据
  2. vmware 扩展Ubuntu虚拟机的磁盘空间
  3. 古典密码学-古典密码破解方式
  4. rawquery 没扎到返回什么_Flutter之踩坑的日子(RawQuery的使用)
  5. Gson解析Json格式数据
  6. symantec backup exec 2010 基本错误总结
  7. 机器人走方格(51Nod-1119)
  8. php 打印 域名ip_php如何获取域名IP地址代码函数
  9. plc vb c语言编程,[转载]VB6.0在PLC和上位机通讯中的应用【工控老鬼分享】
  10. aforge java_java(一些java API)或C#(emgucv,dshownet,Aforge.NET)中的实时对象跟踪
  11. QCC3040---earbud init module
  12. 《一万小时理论》读书笔记
  13. 杭州好玩景点攻略76
  14. 关于QImageReader多次调用read失败的问题
  15. MIT人工智能实验室:如何做研究
  16. 所有快递的签收时间是怎么同一查询的
  17. 编程之美-2.3-寻找发帖“水王”
  18. HDU5761 Rower Bo
  19. visual studio 2008微软教程
  20. C++常见的SML用法 ACM 必备

热门文章

  1. iOS UI-UIScrollView控件实现图片缩放功能
  2. 读《程序设计实践》之一 风格
  3. 《一只孤独的船》莱蒙托夫
  4. tf.one_hot
  5. Go 语言web 框架 Gin 练习3
  6. Python错误:TypeError: 'list' object is not callable
  7. 在linux系统下使用C语言操作临时文件
  8. TSS描述符表的作用
  9. 云炬随笔20210714(1)
  10. 重磅!李飞飞 CS231n 最全学霸笔记精炼版来了