csu-1216: 异或最大值
来源:互联网 发布:云计算和软件工程区别 编辑:程序博客网 时间:2024/05/18 17:43
1216: 异或最大值
Time Limit: 2 Sec Memory Limit:128 Mb Submitted:836 Solved:300Description
给定一些数,求这些数中两个数的异或值最大的那个值
Input
多组数据。第一行为数字个数n,1 <= n <= 10 ^ 5。接下来n行每行一个32位有符号非负整数。
Output
任意两数最大异或值
Sample Input
3379
Sample Output
14
Hint
Source
CSGrandeur的数据结构习题
#include<iostream>#include<cstdio>#include<cstring>using namespace std;#include<algorithm>#define MS(a,b) memset(a,b,sizeof(a))const int N=500000;int num,val[N];int ch[N][2],a[N];void Insert(int x){ int u=0,c,i; for(i=31;i>=0;i--) { c=(x>>i)&1;//将十进制数按位转化成二进制数 if(!ch[u][c]) ch[u][c]=num++; u=ch[u][c]; } val[u]=x;//在最后的一个结点上标明这个十进制数}int Query(int x){ int u=0,c,i; for(i=31;i>=0;i--) { c=(x>>i)&1; if(ch[u][c^1])//要想异或和最大,从最高位开始到最低位依次要相反 u=ch[u][c^1]; else u=ch[u][c]; } return val[u];//返回该数异或值最大的那个数}int main(){ int i,n,ans; while(cin>>n) { num=1; MS(val,0);MS(ch,0); for(i=0;i<n;i++) { cin>>a[i]; Insert(a[i]); } ans=-1; for(i=0;i<n;i++) ans=max(ans,a[i]^Query(a[i])) ; cout<<ans<<endl; } return 0;}
阅读全文
0 0
- CSU 1216 异或最大值
- csu-1216: 异或最大值
- CSU 1216 —— 异或最大值
- CSU 1216 异或最大值【字典树】
- CSU 1216 异或最大值 01trie
- CSU 1216 异或最大值(01Trie)
- CSU-1216: 异或最大值-trie-01字典树
- CSU 1216: 异或最大值(字典树+贪心)
- COJ 1216 异或最大值
- COJ-1216 异或最大值
- CSUOJ 1216 异或最大值 (01Trie)
- 异或最大值
- CSU_1216【异或最大值】
- csu 1307 最大值最小,
- CSU_1216(异或最大值)
- 中南大学COJ 1216: 异或最大值(数据结构)
- 异或最大值(01字典树)
- 【GZOJ】1314——异或最大值
- js算法--生成随机码
- 元胞数组的换行多次写入文档
- 一个css特效
- HDU1220
- python 如何使用 protobuf
- csu-1216: 异或最大值
- tomcat日志报错Could not find or load main class org.apache.catalina.startup.Bootstrap
- 线程同步:CRITICAL_SECTION, Mutex , Event
- HDU 1176 免费馅饼
- 数据库中截取字符串的简单方法
- this与Thread.currentThread
- 关于双向回呼系统
- HDU 1754(线段树,单点覆盖 询问区间最值)
- 爬虫requests对post的使用方法