1216: 异或最大值

Time Limit: 2 Sec  Memory Limit: 128 MB Submit: 98  Solved: 29 [Submit][Status][Web Board]

Description

给定一些数,求这些数中两个数的异或值最大的那个值

Input

第一行为数字个数n,1 <= n <= 10 ^ 5。接下来n行每行一个32位有符号非负整数。

Output

任意两数最大异或值

Sample Input

3
3
7
9

Sample Output

14

HINT

这道题,我学到了一些新的知识。

没有写过字典树。这题用01字典树。

构建树,和树形dp是一样的,都是树。

思路:

  暴力会超时。

  用字典树,01字典树。

 #include<stdio.h>
#include<stdlib.h>
#include<string.h> typedef struct
{
int a[];
int num;
}Tril;
Tril f[<<];
int root,ans; void insert(int x,int u,int num)
{
int i,k;
for(i=num;i>=;i--)
{
k=(<<i&x)?:;
if(f[u].a[k]==-)
f[u].a[k]=root++;
u=f[u].a[k];
}
f[u].num=x;
}
void query(int x,int u,int num)
{
int i,j,k;
for(i=num;i>=;i--)
{
k=(<<i&x)?:;
if(f[u].a[k]!=-)
u=f[u].a[k];
else
u=f[u].a[k^];
}
j=f[u].num^x;
if(j>ans)
ans=j;
}
int main()
{
int n,i,x;
while(scanf("%d",&n)>)
{
memset(f,-,sizeof(Tril)*((n+)<<));
ans=;
root=;
for(i=;i<=n;i++)
{
scanf("%d",&x);
insert(x,,);
query(x,,);
}
printf("%d\n",ans);
}
return ;
}

中南oj 1216: 异或最大值 数据结构的更多相关文章

  1. CSU 1216 异或最大值

    求n个数里面,求两两异或的最大值 直接来肯定会超时 既然要异或最大值,那么两个数的二进制肯定是正好错开为好...为了能快速找到错开的数,确实有点难想到,用字典树,按二进制数插入,再一个一个在字典树里面 ...

  2. CSU 1216异或最大值 (0-1 trie树)

    Description 给定一些数,求这些数中两个数的异或值最大的那个值 Input 多组数据.第一行为数字个数n,1 <= n <= 10 ^ 5.接下来n行每行一个32位有符号非负整数 ...

  3. ACM学习历程—CSU 1216 异或最大值(xor && 贪心 && 字典树)

    题目链接:http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1216 题目大意是给了n个数,然后取出两个数,使得xor值最大. 首先暴力枚举是C(n,  ...

  4. 2013级新生程序设计基础竞赛-正式赛 F 异或最大值 解题报告

    F - 异或最大值 Time Limit: 2000/1000MS (Java/Others)      Memory Limit: 128000/64000KB (Java/Others) Subm ...

  5. BZOJ 4260: Codechef REBXOR (trie树维护异或最大值)

    题意 分析 将区间异或和转化为前缀异或和.那么[L,R][L,R][L,R]的异或和就等于presum[R] xor presum[L−1]presum[R]\ xor \ presum[L-1]pr ...

  6. CSU1216: 异或最大值(01Trie树)

    Description 给定一些数,求这些数中两个数的异或值最大的那个值 Input 多组数据.第一行为数字个数n,1 <= n <= 10 ^ 5.接下来n行每行一个32位有符号非负整数 ...

  7. Poj The xor-longest Path 经典题 Trie求n个数中任意两个异或最大值

    Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 5646   Accepted: 1226 Description In an ...

  8. 杭电oj 2095 & 异或^符号在C/C++中的使用

    异或^符号,在平时的学习时可能遇到的不多,不过有时使用得当可以发挥意想不到的结果. 值得注意的是,异或运算是建立在二进制基础上的,所有运算过程都是按位异或(即相同为0,不同为1,也称模二加),得到最终 ...

  9. Codeforces 811C Vladik and Memorable Trip (区间异或最大值) (线性DP)

    <题目链接> 题目大意: 给你n个数,现在让你选一些区间出来,对于每个区间中的每一种数,全部都只能出现在这个区间. 每个区间的价值为该区间不同的数的异或值之和,现在问你这n个数最大的价值是 ...

随机推荐

  1. 【转】C#具名参数和可选参数

    源地址:https://www.cnblogs.com/similar/p/5006705.html 另:可选参数的一个陷阱 参考:https://www.cnblogs.com/still-wind ...

  2. VMware安装linux系统报错:已将该虚拟机配置为使用 64 位客户机操作系统。但是,无法执行 64 位操作。

    检测问题所在: 下载LeoMoon CPU-V 检查一下CPU VT-x状态是否启用 地址:http://download.csdn.net/detail/qq_22860341/9858011 如果 ...

  3. 多行select中的数据展示和单个删除

    /** 删除多选select中 的某个值,公共方法 只适用于同级节点下只有一个select的情况 v 此按钮,this _id,option中的value的name属性 _name,option中的t ...

  4. python模块与包详解

    <1>.模块:任何  *.py 的文件都可以当作模块使用 import 导入 >>>improt test >>>b=test.a() >> ...

  5. fastcgi main

    main函数里 当kill -TERM pid 时, http://redfoxli.github.io/php-fpm-signals.html  这篇文章 说是 1)master主进程接收到sig ...

  6. P3866 [TJOI2009]战争游戏 最小割

    $ \color{#0066ff}{ 题目描述 }$ 小R正在玩一个战争游戏.游戏地图是一个M行N列的矩阵,每个格子可能是障碍物,也可能是空地,在游戏开始时有若干支敌军分散在不同的空地格子中.每支敌军 ...

  7. 北航软院2012级C#期末考试部分考题解答

    博主注:本渣渣水平有限,文中若有不对的地方敬请指出,谢谢. 本文中大部分图片来自老师的PPT,感谢邵老师,想要的可以点击右边QQ联系我:) 一.选择题(2*15=30) 1.In C# what is ...

  8. 达人篇:5)公差的正态分布与CPK与制程能力(重要)

    本章目的:明确公差分布(Tolerance Distribution)也有自己的形状,了解CPK概念. 1.正态分布(常态分布)normal distribution的概念 统计分析常基于这样的假设: ...

  9. awk练习

    首先,了解awk的运行格式 awk '条件类型1{动作1} 条件类型2{动作2} ...'  filename 1. [root@server3 mnt]# cat passwd root x 0 0 ...

  10. maven相关的说明以及通过它来创建项目

    1.什么是maven maven的本质是一个项目构建工具 2.maven的作用 那么作为一个项目构建工具我们又为什么要使用它以及好处呢 首先项目构建的本质是什么:项目代码从源代码到程序文件的过程是代码 ...