好题收集(3)
来源:互联网 发布:淘宝没有销售属性 编辑:程序博客网 时间:2024/05/24 01:51
异或最大值
Description
异或最大值
求
Hint
我们注意到
每个数最多
运用
注:如果是与和或就不能用这种方法,我们以与为例,如果一位为1,你可以向1的方向找,但如果这位是0,你向0向1都有可能,如果你都去找时间和暴力就差不多了,所以不能用这种方法
Code
#include<iostream>#include<cstdio>#include<string>#include<cstring>#include<algorithm>#include<vector>#include<cmath>#define siz 100100using namespace std;int n,pos;long long ans,numa,numb;long long a[siz];struct Node { int l,r,num;}node[siz*31]; //开到n*最大位数void insert(long long x) { int k,u=0; for(int i=31;i>=0;--i) { k=(x&(1<<i)); if(k) { if(!node[u].r) node[u].r=++pos; u=node[u].r; } else { if(!node[u].l) node[u].l=++pos; u=node[u].l; } } node[u].num=x;}void qwq(long long x) { int k,u=0; for(int i=31;i>=0;--i) { k=(x&(1<<i)); if(k) { if(node[u].l) u=node[u].l; else u=node[u].r; } else { if(node[u].r) u=node[u].r; else u=node[u].l; } } if((x^node[u].num)>ans) ans=(x^node[u].num),numa=x,numb=node[u].num;}int main(){ scanf("%d",&n); for(int i=1;i<=n;++i) { scanf("%lld",&a[i]); insert(a[i]); qwq(a[i]); } printf("%lld %lld %lld",ans,numa,numb); return 0;}}
阅读全文
0 0
- 好题收集(3)
- 好题收集(1)
- 好题收集(2)
- 外挂好贴收集
- 收集的好网站
- 收集好的JavaScript
- ubuntu好文收集
- 收集好的东西
- 好东西 网址收集
- 好网站收集
- [收集]Ubuntu好贴
- 好的地址收集
- 好博客收集
- 网络好文收集
- C++ 好文收集
- 好网站收集
- 好的博客收集
- CSDN好文章收集
- Sublime Text 3 格式化代码快捷键设置
- Spring的体系结构
- [COGS]2. 旅行计划 SPFA解法
- eclipse支持java9
- jenkins 系统设置(全局设置)实例
- 好题收集(3)
- 【测试学习】什么是回归
- Linux-4.4-x86_64 内核配置选项简介
- LintCode刷题(容易篇 二)
- MRPT编译说明
- mac 开启关闭ftp
- android圆形图片裁剪demo以及实现
- html从入门到放弃(5)-表格 table
- 吉他编曲软件Guitar Pro“双11”三折来袭啦!