题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=4825

题目:


n个数,q个询问,每个询问给出一个数x, 输出这n个数中与x异或值最大的那个数

题解&笔记:


01字典树模版题。

01字典树解决从一堆数中选择一个数和给定的数x异或值最大的问题。

字典树上存的是每一位的值,0或者1,每个节点的下一层都有两个节点0/1,用数组val标记数值节点

在寻找和x异或值最大的那个数, 每次都在01字典树上贪心的找和当前位异或起来是1的那个节点,最终找到数值节点。

ac代码:


#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn=100005;// 8!=40320!!不是10000
const int max_base = 32;
ll val[32*maxn];
int ch[32*maxn][2];
int tol = 0;
void init()
{tol = 1;ch[0][0] =  ch[1][0] = 0;
}
void insert(ll x)
{int u = 0;for(int i = max_base; i >= 0; i--){int v = (x >> i & 1);if(!ch[u][v]){ch[tol][1] = ch[tol][0] = 0;val[tol] = 0; //不是数值节点ch[u][v] = tol++;}u = ch[u][v];}val[u] = x;
}
ll query(ll x)
{int u = 0;for(int i = max_base; i >= 0; i--){int v = x >> i & 1;if(ch[u][v^1]) u = ch[u][v^1]; // 贪心的找每位异或起来的1的节点else u = ch[u][v];}return val[u];
}
int main()
{//freopen("/Users/zhangkanqi/Desktop/11.txt","r",stdin);int t;while(~scanf("%d", &t)){int n, q;ll x;for(int k = 1; k <= t; k++){printf("Case #%d:\n", k);init();scanf("%d %d", &n, &q);for (int i = 0; i < n; i++){scanf("%lld", &x);insert(x);}for (int i = 0; i < q; i++){scanf("%lld", &x);printf("%lld\n", query(x));}}}return 0;
}

【算法笔记HDU4825】Xor Sum(01字典树模版)相关推荐

  1. HDU4825 Xor Sum 01字典树(Tire Tree)

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

  2. 2014百度之星资格赛—— Xor Sum(01字典树)

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

  3. 【HDOJ6955】Xor sum(异或前缀和,01字典树)

    1006 Xor sum 题意: 给出一个长度为n的序列,求一个最短连续子序列满足异或和大于等于k.n<1e5. 思路: 参考CF665E,求序列a中有多少个异或和大于等于k的子序列,枚举所有的 ...

  4. hdu-4825(01字典树)

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

  5. HDU4825 Xor Sum —— Trie树

    题目链接:https://vjudge.net/problem/HDU-4825 Xor Sum Time Limit: 2000/1000 MS (Java/Others)    Memory Li ...

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

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

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

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

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

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

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

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

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

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

最新文章

  1. UILable文字不居中问题
  2. 递归函数、生成器、装饰器
  3. c2064 项不会计算为接受0个参数的函数_无网格法理论与Matlab程序设计(6)——传统径向基点插值(RPIM)形函数...
  4. 喷水装置(信息学奥赛一本通-T1424)
  5. 简单的Android Camera2与BoofCV
  6. linux ftp解压命令 cannot fid or open,系统中无卷
  7. python编程入门教程下载-Python编程从入门到实践的PDF教程免费下载
  8. hbase使用restful接口进行数据操作
  9. SRE之道:创造软件系统来维护系统运行
  10. Centos Python安装graphviz和pydotplus
  11. Word 多级标题中的某一级的编号变为竖线
  12. MAX30102脉搏血氧仪和心率传感器(一)驱动程序
  13. Ubuntu 开机自动运行命令或程序
  14. Mybatis对Double类型的字符串进行范围查询
  15. 网上赚钱的好方法,实战案例讲解,让你秒懂赚钱的秘密!
  16. STM8S(stm8s003F) ADC AIN7的使用
  17. 【B站SXT的Java课程中的错误】054 嵌套循环_循环相关练习
  18. 干货 | 带你解锁AC/DC、DC/DC转换器基础
  19. DDOS\CC流量攻击
  20. 解决Watchdogs 、kthrotlds 挖矿蠕虫

热门文章

  1. 将时间戳转化为带时区的格式
  2. android js桥接,一种JavaScript和原生APP之间数据交互方法与流程
  3. vvv在线文档导出工具_墙裂推荐 | 在线文档编辑工具
  4. mysql 字段_【MySql】mysql 字段个数的限制
  5. 对于elemnet-ui的el-upload的使用总结(移除上传文件判断,action等问题)
  6. ASP.NET页面生命周期和asp.net应用程序生命周期
  7. Puppet 笔记 package file services
  8. 个人使用unity3d过程中遇到的一些小问题集合之有时候在场景中创建光源会有一条虚线...
  9. par函数的bg参数-控制图片的背景色
  10. 演示使用Metasploit入侵Windows