<题目链接>

题目大意:

给定一个数字序列,让你从中找出三个不同的数,从而求出:$\max_{i,j,k} (s_i+s_j) \oplus s_k$的值。

解题分析:
先建好01字典树,然后枚举两个不同的数,从字典树中删除这两个数,然后进行匹配,找到能够使 $ (s_i+s_j) \oplus s_k$ 值最大的值。之后再将这两个数插入,进行下一轮询问。

#include <bits/stdc++.h>
using namespace std; #define clr(a,b) memset(a,b,sizeof(a))
typedef long long ll;
const int N = 1e3+;
int n,m,pos;
ll arr[N],nxt[N*][],val[N*],num[N*]; void init(){
pos=;clr(nxt,);clr(val,);clr(num,);
}
void Insert(ll x){
int now=;
for(int i=;i>=;i--){
int to=(x>>i)&;
if(!nxt[now][to])nxt[now][to]=++pos;
now=nxt[now][to];
num[now]++;
}
val[now]=x;
}
void del(int x){
int now=;
for(int i=;i>=;i--){
int to=(x>>i)&;
now=nxt[now][to];
num[now]--;
}
}
ll query(ll x){
int now=;
for(int i=;i>=;i--){
int to=(x>>i)&;
if(nxt[now][to^] && num[nxt[now][to^]])now=nxt[now][to^];
else now=nxt[now][to];
}
return x^val[now];
}
int main(){
int T;scanf("%d",&T);while(T--){
init();
scanf("%d",&n);
for(int i=;i<=n;i++)
scanf("%lld",&arr[i]),Insert(arr[i]);
ll mx=-;
for(int i=;i<n;i++){
for(int j=i+;j<=n;j++){
del(arr[i]);del(arr[j]); //因为三个数应该不同,所以先将这两个数删除
mx=max(mx,query(arr[i]+arr[j]));
Insert(arr[i]);Insert(arr[j]);
}
}
printf("%lld\n",mx);
}
}

2019-03-02

HDU 5536 Chip Factory (暴力+01字典树)的更多相关文章

  1. HDU 5536 Chip Factory 【01字典树删除】

    题目传送门:http://acm.hdu.edu.cn/showproblem.php?pid=5536 Chip Factory Time Limit: 18000/9000 MS (Java/Ot ...

  2. ACM学习历程—HDU 5536 Chip Factory(xor && 字典树)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5536 题目大意是给了一个序列,求(si+sj)^sk的最大值. 首先n有1000,暴力理论上是不行的. ...

  3. Chip Factory(01字典树)

    Chip Factory http://acm.hdu.edu.cn/showproblem.php?pid=5536 Time Limit: 18000/9000 MS (Java/Others)  ...

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

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

  5. Chip Factory(HDU5536 + 暴力 || 01字典树)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5536 题目: 题意: 对于给定的n个数,求出三个下标不同的数使得(si+sj)^sk最大. 思路: ...

  6. HDU 4825 Xor Sum(01字典树入门题)

    http://acm.hdu.edu.cn/showproblem.php?pid=4825 题意: 给出一些数,然后给出多个询问,每个询问要从之前给出的数中选择异或起来后值最大的数. 思路:将给出的 ...

  7. hdu 4825 Xor Sum(01字典树模版题)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4825 题解:一到01字典树的模版题,01字典树就是就是将一些树用二进制放到一个树上这样可以方便对整体异 ...

  8. Codeforces 979 字符串强制N变换最多出现字母 DFS子树 暴力01字典树

    A /* Huyyt */ #include <bits/stdc++.h> #define mem(a,b) memset(a,b,sizeof(a)) #define mkp(a,b) ...

  9. HDU 5536 Chip Factory 字典树

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

随机推荐

  1. Confluence 6 用户宏最佳实践

    这个页面为你在创建用户宏的最佳实践中包含了一些小技巧和建议. 为你的宏添加一个简短的描述 我们鼓励你为你的宏在 模板(Template )添加一个备注的描述,可以参考下面的显示的内容: ## Macr ...

  2. Android源码分析一 Android系统架构

    一 Android系统架构 Linux内核层(Linux Kernel):Android系统基于Linux2.6内核,这一层为Android设备各种硬件提供了底层驱动,如显示驱动.音频驱动.照相机驱动 ...

  3. WireShark Wifi认证数据包分析(论文idea)

    1.使用 wireShark捕获802.11数据帧结构分成三种,管理帧.控制帧.数据帧. 使用的过滤语法: 过滤MAC 地址: Waln.bssid eq=8c:23:0c:44:21:0f 过滤特定 ...

  4. Fiddler抓包2-只抓APP的请求

    前言 fiddler抓手机app的请求,估计大部分都会,但是如何只抓来自app的请求呢? 把来自pc的请求过滤掉,因为请求太多,这样会找不到重要的信息了. 环境准备: 1.电脑上已装fiddler 2 ...

  5. export default 和 export 区别

    转载:https://www.cnblogs.com/mengfangui/p/9073459.html   1.export与export default均可用于导出常量.函数.文件.模块等2.在一 ...

  6. 阿里云使用js 实现OSS图片上传、获取OSS图片列表、获取图片外网访问地址(读写权限私有、读写权限公共);

    详情请参考:https://help.aliyun.com/document_detail/32069.html?spm=a2c4g.11186623.6.763.ZgC59a 或者https://h ...

  7. 论文阅读笔记二十七:Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks(CVPR 2016)

    论文源址:https://arxiv.org/abs/1506.01497 tensorflow代码:https://github.com/endernewton/tf-faster-rcnn 室友对 ...

  8. 数据结构c++实现代码-链表

    /*节点Node的相关声明与定义*/ //Node.h #include<iostream> using namespace std; template<typename T> ...

  9. UEditor黑白名单配置

    在网上找了很多,都不对.自己尝试,代码如下: 在new UEditor之前加上: Object.assign(window.UEDITOR_CONFIG.whitList, { filling: [' ...

  10. Asp.Net MVC Ajax轮训解决Session失效时间

    这种方法不是太好,对服务器得压力大,由于系统是内部人员使用,业务有比较复杂,所以有些值得需要Session去保存,但是,Session有失效时间. 代码如下: $(function () { func ...