题意:就是公式。

这现场赛O(n^3)能过,觉得太没天理了。

做法:字典树,枚举两个数,然后在字典树上贪心的跑。

#include <bits/stdc++.h>using namespace std;const int MAXN = 100010;struct Trie {int ch[2],size;
}T[MAXN];int root = 1,tot = 1;void Insert(int x) {int o = root;T[o].size++;for(int k = 30; k >=0; k--) {int c;if(x&(1<<k)) c = 1;else c = 0;if(!T[o].ch[c]) T[o].ch[c] = ++tot;o = T[o].ch[c];T[o].size++;}
}void Delete(int x) {int o = root;T[o].size--;for(int k = 30; k >=0; k--) {int c;if(x&(1<<k)) c = 1;else c = 0;o = T[o].ch[c];T[o].size--;}
}int Query(int x) {int o = root;for(int k = 30; k >=0; k--) {int c;if(x&(1<<k)) c = 1;else c = 0;if(c==1) {if(T[o].ch[0]&&T[T[o].ch[0]].size) o = T[o].ch[0];else o = T[o].ch[1],x^=(1<<k);}else {if(T[o].ch[1]&&T[T[o].ch[1]].size) o = T[o].ch[1],x^=(1<<k);else o = T[o].ch[0];}}return x;
}int a[MAXN];int main()
{//freopen("in.txt","r",stdin);int T_T,n;scanf("%d",&T_T);while(T_T--) {scanf("%d",&n);int ans = 0;for(int i = 1; i <= n; i++) scanf("%d",&a[i]);for(int i = 1; i <= n; i++)Insert(a[i]);for(int i = 1; i <= n; i++) {Delete(a[i]);for(int j = i+1; j <= n; j++) {Delete(a[j]);ans = max(ans,Query(a[i]+a[j]));Insert(a[j]);}Insert(a[i]);}printf("%d\n",ans);for(int i = 1; i<=tot; i++) T[i].ch[0] = T[i].ch[1] = T[i].size = 0;tot = 1;}return 0;
}

转载于:https://www.cnblogs.com/TreeDream/p/7868077.html

HDU 5536 字典树相关推荐

  1. hdu 4099 字典树 + 斐波那契

    题意:       给你一个串(最长40位)问你这个串是斐波那契F(n)  n <= 99999中的那个数的前缀,如果存在多个输出最小的n否则输出-1. 思路:       给的串最长40位,那 ...

  2. hdu 1298 字典树 + DFS (模拟T9文本输入)

    题意:       给你一些按键顺序,让你输出每一步中概率最大的那个单词,这里的概率计算方 法好好看看别弄错了,一开始就是因为弄错了,各种wa,比如 abc 1 ,ab 1,那么 ab 的概率就是2 ...

  3. Prefix HDU - 5790 字典树 + 主席树

    传送门 文章目录 题意: 思路: 题意: 给你nnn个串,每次询问一个区间,返回这个区间的串的不同的前缀个数,强制在线. 思路: 碰到字符串前缀的问题,我们自然的想到用字典树来解决. 对于每个串,我们 ...

  4. HDU 1800(字典树)

    简单的字典树水题,统计为单词前缀的单词数,取最大,注意要去前0,具体原理还是自己想想吧,最大数决定了最大分组. 诶 PKU月赛之后 我发现我只会水的 .............. #include&l ...

  5. HDU 5687 字典树入门

    Problem C Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others) Tota ...

  6. hdu 1247 字典树

    题意:给你一部分单词,让你找出所有这样的单词:a+b=c,就是一个单词,由另外两个单词串联而成 解题思路:先输入全部单词,构建一棵tire树,然后枚举所有单词,对单词进行查找,查找过程中经过的单词节点 ...

  7. hdu 1251 字典树,指针版

    这题内存需求很大,我用静态数组写的trie总MLE,看discuss说50w的数组才过,但我一开50w的就MLE了啊--想不通 这是链表版的trie,1个case,所以也不用考虑内存释放什么的 #in ...

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

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

  9. HDU 5536 Chip Factory 字典树+贪心

    给你n个数,a1....an,求(ai+aj)^ak最大的值,i不等于j不等于k 思路:先建字典树,暴力i,j每次删除他们,然后贪心找k,再恢复i,j,每次和答案取较大的,就是答案,有关异或的貌似很多 ...

最新文章

  1. 《响应式Web图形设计》一13.2 缩放图像带来的问题
  2. USACO3.32Shopping Offers(DP)
  3. ubuntu 13.04 mysql_Ubuntu13.04 下MySQL5.6安装过程
  4. asp.net listview 字段太多 滚动条_人生有太多身不由己,回头看看最对不起的就是自己...
  5. SQLi LABS Less-31
  6. [HTML] 关于DIV被Flash或表单遮盖的解决方法
  7. 快速定位网络故障步骤
  8. linux下通过文件句柄恢复误删除的数据文件
  9. svn插件说明和安装
  10. 2018年程序员书单
  11. python3手机版画图软件_Python实现画图软件功能方法详解
  12. keras优化算法_Keras实现两个优化器:Lookahead和LazyOptimizer
  13. 更改ubuntu引导界面_UBuntu修改开机启动界面
  14. 召唤神龙源码(可部署上线)
  15. A+B Problem (VIII) : Recursion Practice (Append Code)
  16. win11共享打印机无法连接怎么办
  17. java中定义一个时间_Java中的日期和时间
  18. h5 vr效果_H5案例|通过VR展示的那些烧脑游戏
  19. Java第十章总结集合类
  20. web自动化测试-绕过验证码登录

热门文章

  1. BitTorrent协议与MagNet协议原理
  2. Windows Server入门系列之三 硬盘分区
  3. kafka_2.10-0.8.1.1.tgz的1或3节点集群的下载、安装和配置(图文详细教程)绝对干货...
  4. SQL Server 2012 无人值守安装(加入新实例)
  5. 细说HTTP中POST与GET的区别与联系
  6. struts2启动报错com/opensymphony/xwork2/spring/SpringObjectFactory.java:220:-1
  7. html5 实现 图片上传预览
  8. jeecms v3.x标签教程之[@cms_comment_page]
  9. C++根据.h文件批量生成需要的函数框架
  10. 修改Linux系统默认编辑器