/**
题目:hdu5536 Chip Factory
链接:http://acm.hdu.edu.cn/showproblem.php?pid=5536
题意:给定n个数,令X=(a[i]+a[j])^a[k], i,j,k都不同。求最大的X。 思路:字典树,由于转化为二进制最大是32位。将所有数转化为二进制,不足32位补0.
然后逆序插入字典树(逆序是为了查询的时候,保证先找最大的位,这样结果才是最大的)。
枚举i,j。从字典树删除i,j。然后在字典树找k。计算结果。然后把i,j的数重新插入。 */ #include<iostream>
#include<cstdio>
#include<algorithm>
#include<map>
#include<vector>
#include<queue>
#include<cstring>
#include<cmath>
using namespace std;
typedef pair<int,int> P;
typedef long long LL;
const int INF = 0x3f3f3f3f;
const int maxnode = 3e4+;///最多可能有多少个节点
const int maxn = 1e3+;
const int sigma_size = ;///0或者1
int ch[maxnode][sigma_size];///由于很大,所以结构体内部放不下。要放在外面。
int a[maxn];
int save[];
int z;
struct Trie{
int val[maxnode];
int sz;
int idx(char c){return c-'a';} void insert(int *s)
{
int u = ;
z--;
while(z>=){
int c = s[z];
if(!ch[u][c]){
memset(ch[sz], , sizeof ch[sz]);
val[sz] = ;
ch[u][c] = sz++;
}
u = ch[u][c];
val[u]++;
z--;
}
}
void del(int *s)
{
int u = ;
z--;
while(z>=){
int c = s[z];
u = ch[u][c];
val[u]--;
z--;
}
} LL query(int *s)
{
int u = ;
LL ans = ;
z--;
while(z>=){
int c = s[z];
if(ch[u][!c]&&val[ch[u][!c]]){///因为删除数字之后,ch[u][!c]没有处理,所以要通过val来判断是否还存在。
ans = ans*+;
u = ch[u][!c];
}else
{
ans = ans*;
u = ch[u][c];
}
z--;
}
return ans;
}
};
void getSave(int n)
{
z = ;
while(n){
save[z++] = n%;
n /= ;
}
while(z<){ ///存了32个数。
save[z++] = ;
}
}
int main()
{
int T, n;
Trie trie;
cin>>T;
while(T--)
{
scanf("%d",&n);
trie.sz = ;
memset(ch[], , sizeof ch[]);
for(int i = ; i < n; i++){
scanf("%d",&a[i]);
getSave(a[i]);
trie.insert(save);
}
LL ans = ;
for(int i = ; i < n; i++){
for(int j = i+; j < n; j++){
getSave(a[i]);
trie.del(save);
getSave(a[j]);
trie.del(save);
getSave(a[i]+a[j]);
ans = max(ans,trie.query(save));
getSave(a[i]);
trie.insert(save);
getSave(a[j]);
trie.insert(save);
}
}
printf("%lld\n",ans);
}
return ;
}

hdu5536 Chip Factory 字典树+暴力 处理异或最大 令X=(a[i]+a[j])^a[k], i,j,k都不同。求最大的X。的更多相关文章

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

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

  2. HDU 5536 Chip Factory 字典树

    Chip Factory Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid= ...

  3. hdu 5536 Chip Factory 字典树+bitset 铜牌题

    Chip Factory Time Limit: 18000/9000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others)T ...

  4. AcWing:143. 最大异或对(01字典树 + 位运算 + 异或性质)

    在给定的N个整数A1,A2……ANA1,A2……AN中选出两个进行xor(异或)运算,得到的结果最大是多少? 输入格式 第一行输入一个整数N. 第二行输入N个整数A1A1-ANAN. 输出格式 输出一 ...

  5. [HDU-5536] Chip Factory (01字典树)

    Problem Description John is a manager of a CPU chip factory, the factory produces lots of chips ever ...

  6. HDU-5536 Chip Factory,又见字典树,好题+1!

    Chip Factory 题意:一个n个数的数列,求三个数其中两个数的和与另外一个数的异或值最大,输出这个最大值. 思路:和前面那个百度之星资格赛HDU4825的类似,多了两个过程,一个是枚举和,另一 ...

  7. HDU4825 Xor Sum(字典树解决最大异或问题)

    Zeus 和 Prometheus 做了一个游戏,Prometheus 给 Zeus 一个集合,集合中包含了N个正整数,随后 Prometheus 将向 Zeus 发起M次询问,每次询问中包含一个正整 ...

  8. poj3764字典树路径最大异或和

    The xor-longest Path Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 6853   Accepted: 1 ...

  9. HDU-5536 Chip Factory (字典树)

    题目大意:给n个数,编号为1~n,取三个编号不同的数,使表达式(a+b)^c的值最大. 题目分析:将这n个数按二进制位建立一棵trie.枚举i.j的和,查询亦或最大值,但在查询之前要把i.j在trie ...

随机推荐

  1. IOS APP 上传到AppStore

    由于第一次接触要把 app 上传到 AppStore 比较棘手,很多地方不懂,研究了 大半天 终于给上传成功了,现在坐等审核吧,首先把上传到AppStore的流程 整理下 : 第一 :准备证书 (要确 ...

  2. mybatis paramType String Error

    我这么写的 <select id="getHotPlayersByDate" parameterType="java.lang.String" resul ...

  3. 7个高级技巧帮助你释放大量Mac OS X硬盘空间

    7个高级技巧帮助你释放大量Mac OS X硬盘空间 https://blog.csdn.net/hu434587115/article/details/72874811/

  4. [Android Pro] 调用系统相机和图库,裁剪图片

    private static final int PHOTO_REQUEST_TAKEPHOTO = 1;// 拍照 private static final int PHOTO_REQUEST_GA ...

  5. 绘制函数y=(x^2-2x+1)/(x^2+x+2)的曲线

    代码: <!DOCTYPE html> <html lang="utf-8"> <meta http-equiv="Content-Type ...

  6. 虚拟机集群出现“Device eth0 does not seem to be present, delaying initialization” failed

    问题再现: 解决办法: 1:编辑/etc/sysconfig/network-scripts/ifcfg-eth0配置文件,将ifcfg-eth0的配置文件里里面以前的关于MAC地址这一行删除掉.另外 ...

  7. linux中升级jdk的方法

    先查看java的安装情况: # rpm -qa|grep java 卸载: rpm -e --nodeps ******* 然后再安装就可以了

  8. iOS 使用NSUserdefault 保存自定义的 对象

    一:NSUserDefaults支持的数据格式有:NSNumber(Integer.Float.Double),NSString,NSData,NSArray,NSDictionary,BOOL类型: ...

  9. Win10注销在哪?怎么注销电脑

    进入Win10电脑桌面,同时按住键盘上的[Alt]+[F4]组合快捷键,可以快速呼出[关闭Windows]操作选项,在下面的"您希望计算机所什么"里选择[注销],然后点击底部的[确 ...

  10. 使用typescript开发js代码提升代码维护性

    function test() { var gs = new Greeter('ss'); alert( gs.greet()); } window.onload = test; class Gree ...