题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=947

/**你可以把所有的数字变成等长的二进制,当成字符串然后建字典树,再枚举每个数把这个数的每一位取反去匹配匹配的时候能匹配就尽量匹配,不能就走不同的分支这样求出来的就是这个数能搞出来的最大的
**/#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<algorithm>
using namespace std;
typedef long long LL;
LL a[100005],c[55];
struct node
{int sum;node *next[2];
};
struct node *root;
struct node *build()
{struct node *p;p=(struct node *)malloc(sizeof(struct node));for(int i=0; i<2; i++){p->next[i]=NULL;}return p;
}
void solve(LL s)
{memset(c,0,sizeof(c));int num = 50;while(s){c[num--] = s%2;s/=2;}
}
void insert(LL s)
{solve(s);struct node *p;p=root;for(int i=0; i<=50; i++){if(p->next[c[i]]==NULL)p->next[c[i]]=build();p=p->next[c[i]];}
}
LL find(LL s)
{solve(s);struct node *p;p=root;LL sum = 0;for(int i=0; i<=50; i++){if(p->next[!c[i]]==NULL)//尽量使高位为1,所以取反  {sum = sum * 2;p=p->next[c[i]];}else{sum = sum * 2 + 1;p=p->next[!c[i]];}}return sum;
}
int main()
{int n,i;while(scanf("%d",&n)!=EOF){root=build();LL ans = 0;for(i=0; i<n; i++){scanf("%lld",&a[i]);insert(a[i]);}for(i = 0; i < n; i++)ans = max(find(a[i]),ans);printf("%lld\n",ans);}return 0;
}

nyoj - 947(Max Xor)字典树相关推荐

  1. nyoj 947 Max Xor(字典树)

    Max Xor 时间限制:3000 ms  |  内存限制:65535 KB 难度:4 描述 给一个长度为 n 的数列 {an} ,找出 max {ai ^ aj}. 输入 多组测试数据. 第 1 行 ...

  2. NYOJ 685 查找字符串 字典树

    查找字符串 时间限制:1000 ms  |  内存限制:65535 KB 难度:3 描述 小明得到了一张写有奇怪字符串的纸,他想知道一些字符串出现了多少次,但这些字符串太多了,他想找你帮忙,你能帮他吗 ...

  3. 字典树--Xor问题

    字典树大家都知道吧,如果不知道可以看这里,我的模板写得还是不错的: 字符串–Trie树(字典树) 接下来我们先看一个问题,通过这个问题来了解Xor这个运算的基本性质: 洛谷 P2420 让我们异或吧 ...

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

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

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

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

  6. 【LOJ10050】The XOR Largest Pair(字典树)

    problem 给定n个整数,在其中任意选出两个进行xor运算,得到的结果最大值是多少? n<1e5,ai在int范围内 solution 朴素枚举,O(n^2), TLE 考虑异或运算,相同为 ...

  7. 【CF1616H】Keep XOR Low(字典树)

    题面 题解 为了方便,我们将 xxx 加 1,然后让 aixoraj<xa_i\mathrm{~xor~}a_j<xai​ xor aj​<x . 可以把数插入到字典树中,然后遍历字 ...

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

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

  9. HDU多校1 - 6955 Xor sum(字典树+贪心)

    题目链接:点击查看 题目大意:给出一个长度为 nnn 的序列,要求找到一段长度最短的区间,使得异或和大于等于 kkk,如果有多种答案,输出左端点最小的那个 题目分析:倒着维护一下后缀异或和,将后缀异或 ...

最新文章

  1. python读取文件模式_python如何读取文件的数据
  2. 《食堂远程下单系统》设计规格说明书
  3. 【转】ABP源码分析三十一:ABP.AutoMapper
  4. 详解3D物体检测模型: Voxel Transformer for 3D Object Detection
  5. 马云现身敦煌种梭梭树:蚂蚁森林即将突破1亿棵树
  6. python出现—with the features you requested: lxml. Do you need to install a parser library?
  7. python的pass语句_Python pass语句–通过Python
  8. 关于技术问题的请教和解决步骤
  9. 【Python】functools.lru_cache加快递归速度
  10. Mahout 安装配置及一个简单测试
  11. 微信小程序中引入图标
  12. 如何在VS2013中配置一个DirectX开发环境
  13. oracle查看表索引及索引类型
  14. 什么是人工智能?(科普)
  15. win8专业版和win8.1专业版安装密钥key及其永久激活工具
  16. 【编程原则】预则立,不预则废
  17. 销售开发新客户的方法 如何开拓新客户
  18. sim7600ce拨号上网
  19. 分布表示(distributional representation)与分布式表示(distributed representation)
  20. idea设置全局ignore

热门文章

  1. 深度案例 | TO B 企业如何从 0 到 1 实现数据驱动?
  2. 大三前端实习生2018总结
  3. 用javascript判断当前是安卓平台还是ios平台
  4. Ladda – 把加载提示效果集成到按钮中,提升用户体验
  5. JSTokenField
  6. 9、C语言中sscanf使用及运算符优先级
  7. 新 开通 自己 IT 博客
  8. [翻译]RobotTurK: 灾难情况紧急视频系统
  9. 项目中除了需求外还需要知道的问题
  10. Feb 26 Programming Notes