问题描述:

Keroro来侵略地球之前,曾跟Giroro伍长打赌:“我一个人灭掉整个地球给你看!”.
于是Keroro同学真的自己一个人来到地球开始他的侵略行动了。从K隆星出发之前,Keroro从Kururu曹长那儿拿了若干台左手武器{Li}和若干台右手武器{Ri},Keroro需要从{Li}里选一台左手武器,从{Ri}里选一台右手武器,用来组合成可用的恐怖武器。
左右手武器组合的规则很简单,假设从{Li}选出来攻击力为p的武器,从{Ri}选出来攻击力为q的武器,组合起来的攻击力就是p XOR q.

Keroro想知道,他能组合成的最强武器攻击力为多少?

Hint:必须左右手武器都选出来一个,才能组合成可用武器

XOR表二进制里的“异或”操作,pascal语言里是"xor", C/C++/Java里是"^".

输入

第一行两个整数n, m (1 <= n,m <= 100000), 表有n件左手武器,m件右手武器。
第二行n个正整数{L},li表第i件左手武器的攻击力,0 <= li <= 10^12
第三行m个正整数{R},ri表第i件右手武器的攻击力,0 <= ri <= 10^12

思路:

以左手武器的二进制01序列构建字典树。

右手武器按序号依次对字典树进行匹配,贪心发找到异或值最大的分支并更新max。

节点类:

class node
{
public:
 node *l,*r;
 int v;
 node()
 {
  l=NULL;
  r=NULL;
 }
};

构建字典树(插入序列)

void insert(node * &r,int i,bool *s)
{
 if(i>=42)
  return;
 if(s[i]==0)
 {
  if(r->l==NULL)
  r->l=new node;
  insert(r->l,i+1,s);
 }
 else
 {
  if(r->r==NULL)
  r->r=new node;
  insert(r->r,i+1,s);
 }
}

匹配函数。temp保存最大异或值的01序列。

void  find(bool *s,int i,node *r,bool * &temp)
{
 if(i>=42)
  return;
 if(s[i]==0)
 {
  if(r->r!=NULL)
  {
   temp[i]=1;
   find(s,i+1,r->r,temp);
  }
  else
  {
   temp[i]=0;
   find(s,i+1,r->l,temp);
  }
 }
 if(s[i]==1)
 {
  if(r->l!=NULL)
  {
   temp[i]=1;
   find(s,i+1,r->l,temp);
  }
  else
  {
   temp[i]=0;
   find(s,i+1,r->r,temp);
  }
 }
}

主函数略。

使用01字典树解决最大异或问题相关推荐

  1. POJ 3764 Language: The xor-longest Path (01字典树+DFS)

    传送门:POJ 3764 题目大意: 在树上找一段路径(连续)使得边权相异或的结果最大. 前置技能: 1.用链式前向星建图. 2. 01字典树的应用. 思路: 本题用 vector数组建图是会超时的, ...

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

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

  3. Codechef REBXOR HYSBZ - 4260(01字典树+区间异或最大)

    Input 输入数据的第一行包含一个整数N,表示数组中的元素个数. 第二行包含N个整数A1,A2,-,AN. Output 输出一行包含给定表达式可能的最大值. Sample Input 5 1 2 ...

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

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

  5. 字典树-01字典树基础

    字典树-01字典树 什么是字典树? 字典树,又叫前缀树,Trie树,通常被用作字符串匹配. 它的实现原理是什么? 先建立一颗树,对于这棵树上每个节点i与其后继节点间的连线,都有存入一个字符. 对于存图 ...

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

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

  7. 字典树 与 01字典树

    字典树可以降低空间复杂度:01字典树可以降低时间复杂度. 字典树:又称单词查找树,Trie树,是一种树形结构,是一种哈希树的变种.典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以经 ...

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

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

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

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

最新文章

  1. 程序员的自我修养--链接、装载与库笔记:目标文件里有什么
  2. 在linux环境下重启oracle数据库,解决密码过期的问题
  3. div横排 html_html中两个DIV怎么横排靠齐?
  4. 我也能做CTO之程序员职业规划
  5. 【Apache】 alias+proxy 将资源路径指向某个本地目录
  6. 第二章:Webdriver 控制浏览器前进和后退
  7. .net中调用exchange服务器发邮件
  8. three.js script vertex和fragment在react中使用/纯js写法
  9. dao层和service层和control_最受欢迎Java数据库访问框架(DAO层)
  10. 基于Tiles框架Struts框架的UI 设计—几种组织HTML和JSP视图组件
  11. vue 中二维码的使用和工具比较
  12. python集合运算_从零开始学Python - 第014课:常用数据结构之集合
  13. AD教程系列 | 1-认识基本电子元器件、封装和读数
  14. 流程图符号以及绘制流程图方法
  15. cas4.0 mysql_【SSO单点系列】:CAS4.0 CAS整合SpringMVC+MyBatis实现数据库校验(04)
  16. always on sql 收缩日志_啥?我写的一条SQL让公司网站瘫痪了...
  17. Linux内核分析——第四周学习笔记
  18. 胡寿松自动控制原理第七版勘误-152页
  19. java版本的在线OJ项目
  20. 【推荐】智慧数字城管执法综合应用平台可视化系统建设架构解决方案合集(共202份,920M)

热门文章

  1. IT行业岗位及发展方向
  2. 图文并茂详细教程之——用pixhawk飞控组装一台S500四轴无人机(中)(苍穹四轴)
  3. PCL入门系列一——PCL简介及PCL安装
  4. 1548_AURIX_TC275_锁步比较逻辑LCL
  5. LOJ#3054. 「HNOI 2019」鱼
  6. C++ 多态(补充)
  7. python 绘制简单的折现图
  8. GTD系列之我为什么使用GTD管理个人体系
  9. 线性代数(9)——初等矩阵和矩阵可逆性(上)
  10. android应用商店升级标准,Android 跳转应用市场更新及评分