HDU 5536 Chip Factory 01字典树
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5536
题意:数组中求 i,j,k 最大的(A[i] + A[j]) xor A[k] i != j != k
n^2枚举i,j 同时删除字典树中的A[i] A[j] 之后询问A[i] + A[j] 的最大的A[k] 维护最大异或和
代码:
#include <cstdio>
#include <iostream>
#include <queue>
#include <cstring>
#define sf scanf
#define pf printf
using namespace std;
const int maxn = 1000 + 5;
typedef long long LL;
int ch[32 * maxn][2];
LL value[32 * maxn];
int cnt[32 * maxn];
int node_cnt;inline void init(){node_cnt = 1;memset(ch[0],0,sizeof(ch));
}inline void Insert(LL x,int f){int cur = 0;for(int i = 32;i >= 0;--i){int idx = (x >> i) & 1;if(!ch[cur][idx]){memset(ch[node_cnt],0,sizeof(ch[node_cnt]));ch[cur][idx] = node_cnt;cnt[node_cnt] = 0;value[node_cnt++] = 0;}cur = ch[cur][idx];cnt[cur] += f;}value[cur] = x;
}inline LL Query(LL x){int cur = 0;for(int i = 32;i >= 0;--i){int idx = (x >> i) & 1;if(ch[cur][idx ^ 1] && cnt[ch[cur][idx^1]]) cur = ch[cur][idx ^ 1];else cur = ch[cur][idx];}return value[cur];
}
int A[maxn];
int main(){int T,n,ans,temp,tmp2;sf("%d",&T);while( T-- ){init();ans = 0;sf("%d",&n);for(int i = 0;i < n;++i) {sf("%d",&A[i]);Insert(A[i],1);}for(int i = 0;i < n;++i){for(int j = i + 1;j < n;++j){Insert(A[i],-1);Insert(A[j],-1);temp = ( A[i] + A[j] )^ Query(A[i] + A[j]);ans = max(ans,temp);Insert(A[i],1);Insert(A[j],1);}}pf("%d\n",ans);}return 0;
}
HDU 5536 Chip Factory 01字典树相关推荐
- HDU 5536 Chip Factory (01字典树)
传送门:HDU 5536 题目大意: 在一个数组中找出 (s[i]+s[j])^s[k] 最大的值,其中 i.j.k 各不相同. 前至技能:01字典树详解. 思路: 01字典树模板可以解决查找与 x ...
- HDU 5536 Chip Factory 字典树+贪心
给你n个数,a1....an,求(ai+aj)^ak最大的值,i不等于j不等于k 思路:先建字典树,暴力i,j每次删除他们,然后贪心找k,再恢复i,j,每次和答案取较大的,就是答案,有关异或的貌似很多 ...
- 字典树,01字典树,可持续化01字典树(总结+例题)
目录 字典树 01字典树 字典树例题: power oj 2390: 查单词 HDU 1671 Phone List HDU 1004Let the Balloon Rise HDU 1075 Wha ...
- HDU 4825:Print Article(01字典树)
Xor Sum Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 132768/132768 K (Java/Others) Total ...
- 字典树01字典树专题对字典树的理解
对于字典树和01字典树的一点理解: 首先,字典树建树的过程就是按照每个数的前缀来的,如果你要存储一个全小写字母字符串,那么这个树每一个节点最多26个节点,这样的话,如果要找特定的单词的话,按照建树的方 ...
- 字典树 01字典树【数据结构】
题目1:字典树 HDU 1251 统计难题 Problem Description Ignatius最近遇到一个难题,老师交给他很多单词(只有小写字母组成,不会有重复的单词出现),现在老师要他统计出以 ...
- 字典树与01字典树详解
[镇楼] 不满足于粗浅的表面了解字典树吗,今天!由我给大家带来!字典树与01字典树的解析!! 目录 [引入] [字典树] [01字典树] [引用参考] [引入] 字典是干啥的?查找字的.那么字典树 ...
- hdu5296 01字典树
根据二进制建一棵01字典树,每个节点的答案等于左节点0的个数 * 右节点1的个数 * 2,遍历整棵树就能得到答案. AC代码: #include<cstdio> using namespa ...
- Beautiful Subarrays (01字典树 瞎搞)
题意: 题解: 一看问的是子序列,并且还是异或. 首先想到01字典树,再一看让你求子序列的个数,大致是想让你把这个序列进行前缀异或处理后然后再01字典树上进行操作吧. 假设01字典树往左边是0右边是1 ...
最新文章
- Xamarin Android组件篇教程RecylerView动画组件RecylerViewAnimators(1)
- Facebook 上一位大佬发表的代码看法
- Web本地计算发展史
- 20分钟快速了解Redis
- 区块链 State Machine Replication (SMR)是什么
- UVA 299 - Train Swapping(冒泡排序)
- 华中师范大学计算机学院在哪个校区,关于《计科,你的力量在哪里?》★华师计算机科学系★研究生情况~~过来人指点下...
- IM即时通讯加入“对方正在输入…”真的好吗?
- m126a linux驱动下载,惠普HP LaserJet Pro M126a MFP 驱动
- sas字段有html脚本,sas 实现自动化报表格式之定性变量
- 2035年进入现代化交通强国行列
- 手把手教你找回学信网原来的登记手机号码
- mysql初始化密码_MySQL5.7初始密码查看及重置
- 京东云引擎:免费好用的web应用托管平台
- (一)JAVA基于OPENXML的word文档插入、合并、替换操作系列之基础篇
- C# 客户端急速缓存方法 使用哈希表
- 智付科技集团2018全球合作伙伴大会成功举办 5大战略布局首度公开
- 用pytorch官网命令 安装pytorch1.10.1+CUDA11.1报错
- Dagger2 依赖注入之@Provides 分析
- 微信公众号粉丝快速涨粉的五个方法