CSU 1216 异或最大值(01Trie)
来源:互联网 发布:淘宝上架宝贝数量 编辑:程序博客网 时间:2024/05/18 20:11
字典树,碰到了一个同类型但比这个难点的题,不会做,先找个简单的来练练,铺垫下。01Trie就是每层只有0和1的字典树。把一个数字的二进制看成字符串,从高位到低位放进字典树。
http://blog.csdn.net/fuyukai/article/details/50366133
这里讲的很详细。
——-2017.11.06——————
突然想到,这题代码是错误的,数据水,还是过了,query那里写错了,正确代码见:http://blog.csdn.net/gyhguoge01234/article/details/78357625
虽然不是一个题了,但大致一样
#include <stdio.h>#include <string.h>const int MAXN = 1e5+10;template<typename T>T max(const T a, const T b){ if(a > b) return a; return b;}struct Trie{ int next[MAXN*31][2]; int root,sz; void init() { memset(next,-1,sizeof(next)); sz = 0; root = 0; } void insert(int x) { int now = root; for(int i = 31; i >= 0; --i) { int t = (x>>i)&1; if(next[now][t] == -1) next[now][t] = ++sz; now = next[now][t]; } } int query(int x) { int ret = 0,t; int now = root; for(int i = 31; i >= 0; --i) { t = (x>>i)&1; if(next[now][!t] != -1) t = !t; ret |= t<<i; now = next[now][t]; } return ret; }};Trie t;int main(){ int n,res,num; while(scanf("%d",&n) != EOF) { t.init(); res = -1; for(int i = 0; i < n; ++i) { scanf("%d",&num); t.insert(num); res = max(res,num^t.query(num)); } printf("%d\n",res); } return 0;}
阅读全文
0 0
- CSU 1216 异或最大值 01trie
- CSU 1216 异或最大值(01Trie)
- CSU-1216: 异或最大值-trie-01字典树
- CSU 1216 异或最大值
- csu-1216: 异或最大值
- CSUOJ 1216 异或最大值 (01Trie)
- CSU 1216 —— 异或最大值
- CSU 1216 异或最大值【字典树】
- CSU 1216: 异或最大值(字典树+贪心)
- CSU1216-异或最大值-0-1Trie树
- 二进制trie树解异或最大值问题
- COJ 1216 异或最大值
- COJ-1216 异或最大值
- 01Trie求最大异或
- 异或最大值(01字典树)
- 异或最大值
- CSU_1216【异或最大值】
- csu 1307 最大值最小,
- 论文|引言的写法
- python基础——生成器
- 新仙剑奇侠传H5上线测试了
- upc 4189&&河南省第十届大学生程序设计竞赛 情报传递
- linux tar常见命令详解
- CSU 1216 异或最大值(01Trie)
- 多研究些架构,少谈些框架
- 模板方法模式
- 不能访问虚机中的linux系统中的tomcat中的应用链接(带端口)
- Jquery+Ajax使用实例
- Android第三方库学习进度表
- 表单相关新增元素和属性 4
- go context专题(四)- context 最佳实践和相关争议
- 身为JAVA工作者必须了解的实战知识(七)