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

转载来自:https://blog.csdn.net/forever_kirito/article/details/78596243

代码:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
struct node
{int cut;node *son[2];node(){cut=0;son[0]=son[1]=NULL;}
};
node *root;
void Insert(int x)
{bool a[32];int xx=x;node *p=root,*q;for(int i=0;i<32;i++){a[i]=x&1;x=x>>1;}//将传入的数字化成二进制 //确实应该倒着建树只有这个样子查找的时候才能从高位开始for(int i=31;i>=0;i--){if(p->son[a[i]]!=NULL) p=p->son[a[i]];else {q=new node;p->son[a[i]]=q;p=q;}} p->cut=xx;//将值存在结束的位置上 return;
}
int Find(int x) { //查找 bool a[32];node *p=root;for(int i=0;i<32;i++){a[i]=x&1;x=x>>1;}//将传入的数字化成二进制 for(int i=31;i>=0;i--){if(p->son[!a[i]]!=NULL)p=p->son[!a[i]];//求异或最大 有不同的先走不同的 else p=p->son[a[i]]; }  return p->cut;
}
void del(node *p)
{for(int i=0;i<2;i++)if(p->son[i]!=NULL)del(p->son[i]);delete(p);
}
int main()
{  int t,n,m,k;  scanf("%d",&t);  for(k=1;k<=t;k++){  scanf("%d%d",&n,&m);  int x;  root=new node;  for(int i=0;i<n;i++){  scanf("%d",&x);  Insert(x);  }  printf("Case #%d:\n",k);  for(int i=0;i<m;i++){  scanf("%d",&x);  printf("%d\n",Find(x));  }  del(root);  }  return 0;
}  

01 字典树的作用我查了一下

总的来说如果碰到连续异或和,一般都是01字典树,并且01字典树也很容易,顶多就是加个删除,这个用加标记当前节点用过多少次,删除的时候num--;,恢复的时候num++;即可,十分简单。

xor的还有一种套路就是按位枚举的贪心构造,一般就是几个零散的数的xor和最大或者最小,反正不要求连续的,可以往按位枚举考虑,不过按位枚举也更难。

简单来说就是求异或

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字典树,利用前缀和的思想进行求解,我们在插入前缀的同时,也在不断的更新最大值. 我们查询当前 二进制字符串与已经插入 ...

  10. hdu-4825(01字典树)

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

最新文章

  1. 技术大佬们都推荐的vim学习指南来了,值得收藏!
  2. 去年我年薪 30W,今年我一天做 3 顿饭
  3. 异步fifo_FPGA设计基础——FIFO的应用
  4. java简述会话对象的生命周期_简述Java Web三大作用域对象
  5. 用VB实现带图片的XP风格的按钮控件
  6. go语言--goroutine
  7. 数据库大作业——基于C#和SQL Server的简单日常记账系统
  8. 深入理解深度学习——Item Embedding
  9. Mac系统不能使用网银怎么办?Parallels帮你
  10. 游戏ui设计,游戏ui设计需要学什么
  11. TCP局域网服务器简易搭建(eps-01s)
  12. 原生JS --360度全景展示
  13. 开通公众号啦:java4all
  14. 提升程序员工作效率的6个工具利器
  15. 大学生月入过万的创业好项目——自媒体
  16. HorizontalScrollview+recycleview实现横向滑动
  17. webserver、phpstorm和IDEA报错: 创建JVM失败,JVM路径:D:WebStorm 2020.1\jbr\
  18. 【软件下载_1】关于Panoply的下载
  19. 工控机组建文件服务器,工控机做云服务器
  20. 重温CSS3常见新特性的奥秘(个人总结)

热门文章

  1. 迭代器模式(Iterator)和组合模式(Composite)
  2. node服务器返回文件,Node.js 服务器对应的路由返回对应的 HTML 文件
  3. 减少HTTP请求之将图片转成二进制并生成Base64编码,可以在网页中通过url查看图片(大型网站优化技术)...
  4. 一如此前的回应,王劲将景驰科技总部搬到了广州
  5. 阿里云破世界记录,王坚说新登月计划需十年,我看不用!
  6. 渗透场景篇--当XSS遇上CSRF
  7. Linux驱动中相关函数查询
  8. 介绍一下和AspNetPager结合的不错的分页方案
  9. cannot spawn XXX\bin\TortoiseGitPlink.exe: No such file or directory
  10. 关系型数据库一致性的理解