HDU-5536 Chip Factory,又见字典树,好题+1!
Chip Factory
题意:一个n个数的数列,求三个数其中两个数的和与另外一个数的异或值最大,输出这个最大值。
思路:和前面那个百度之星资格赛HDU4825的类似,多了两个过程,一个是枚举和,另一个是删除过程,第一次写删除操作,还一遍A了,小激动。
会不会是后台水,东北师范官方没有给出标准测试数据,也就是说这数据是hdu YY的,我猜是这样,碰到过类似的情况,错误的代码竟然A了区域赛的题。这样为了AC貌似有点不好呀,不过思路很值得学习!
struct tree
{
int f;
tree *next[N];
tree()
{
for(int i=0; i<N; i++) next[i]=NULL;
f=0;
}
}*root;
int a[33];
ll s[1005];
void ch(ll x)//转化为二进制
{
memset(a,0,sizeof(a));
int len=0;
while(x)
{
a[len++]=x%2;
x/=2;
}
}
void insert(ll x)//插入一个数
{
ch(x);
int len=32;//长度最多32位
tree *p=root;
while(len>=0)
{
int id=a[len];
if(p->next[id]==NULL)
{
tree *temp=new tree;
p->next[id]=temp;
}
p=p->next[id];
p->f++;//每个点都构成一个数,经过此点,次数加一
len--;
}
}
ll query(ll x)
{
ch(x);
tree *p=root;
for(int i=0; i<33; i++) a[i]^=1;//不一定要这样,只是写HDU4825的时候用的这种思路
int len=32;
ll ans=0;
while(len>=0)
{
int id=a[len];
if(p->next[id]==NULL||p->next[id]->f==0) id^=1;//为0表示此节点被撤销了,另寻他路
if(id) ans+=(ll)1<<len;
p=p->next[id];
len--;
}
return ans^x;
}
void fre(ll x)
{
ch(x);
int len=32;
tree *p=root;
while(len>=0)
{
int id=a[len];
p->next[id]->f--;//撤销路径
p=p->next[id];
len--;
}
}
void del(tree *root)
{
for(int i=0; i<N; i++)
if(root->next[i])
del(root->next[i]);
delete(root);
}
int main()
{
int t,n;
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
root=new tree;
for(int i=0; i<n; i++)
{
scanf("%I64d",&s[i]);
insert(s[i]);
}
ll ans=0;
for(int i=0; i<n; i++)
{
fre(s[i]);
for(int j=i+1; j<n; j++)
{
fre(s[j]);
ans=max(ans,query(s[i]+s[j]));//撤销点,枚举和
insert(s[j]);
}
insert(s[i]);
}
printf("%I64d\n",ans);
del(root);
}
return 0;
}
HDU-5536 Chip Factory,又见字典树,好题+1!的更多相关文章
- HDU 5536 Chip Factory 【01字典树删除】
题目传送门:http://acm.hdu.edu.cn/showproblem.php?pid=5536 Chip Factory Time Limit: 18000/9000 MS (Java/Ot ...
- ACM学习历程—HDU 5536 Chip Factory(xor && 字典树)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5536 题目大意是给了一个序列,求(si+sj)^sk的最大值. 首先n有1000,暴力理论上是不行的. ...
- HDU 5536 Chip Factory (暴力+01字典树)
<题目链接> 题目大意: 给定一个数字序列,让你从中找出三个不同的数,从而求出:$\max_{i,j,k} (s_i+s_j) \oplus s_k$的值. 解题分析:先建好01字典树,然 ...
- HDU 5536 Chip Factory 字典树+贪心
给你n个数,a1....an,求(ai+aj)^ak最大的值,i不等于j不等于k 思路:先建字典树,暴力i,j每次删除他们,然后贪心找k,再恢复i,j,每次和答案取较大的,就是答案,有关异或的貌似很多 ...
- HDU 5536 Chip Factory 字典树
Chip Factory Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid= ...
- hdu 5536 Chip Factory 字典树+bitset 铜牌题
Chip Factory Time Limit: 18000/9000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)T ...
- Chip Factory(01字典树)
Chip Factory http://acm.hdu.edu.cn/showproblem.php?pid=5536 Time Limit: 18000/9000 MS (Java/Others) ...
- hdu 5536 Chip Factory (01 Trie)
链接:http://acm.hdu.edu.cn/showproblem.php?pid=5536 题面; Chip Factory Time Limit: 18000/9000 MS (Java/O ...
- HDU 5536 Chip Factory
Chip Factory Time Limit: 18000/9000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)T ...
随机推荐
- 流行的9个Java框架介绍: 优点、缺点等等
流行的9个Java框架介绍: 优点.缺点等等 在 2018年,Java仍然是世界上最流行的编程语言.它拥有一个巨大的生态系统,在全世界有超过900万Java开发人员.虽然Java不是最直接的语言,但是 ...
- Java——HashSet和TreeSet的区别
HashSetHashSet有以下特点 不能保证元素的排列顺序,顺序有可能发生变化 不是同步的 集合元素可以是null,但只能放入一个null当向HashSet集合中存入一个元素时,HashSe ...
- 记AccessibilityService使用(转)
转自 :http://www.jianshu.com/p/ba298b8d5a6e 一.AccessibilityService的使用 首先先写一个类去继承AccessibilityService p ...
- TitleBar(标题栏)的使用
github地址:https://github.com/buhuiming/BHMAndroid 使用compile 'com.bhm.sdk.bhmlibrary:BHMLibrary:1.1.2' ...
- Azure powershell 获取 vmSize 可用列表的命令
1.使用 Add-AzureAccount -Environment azurechinacloud 登录到订阅 2.选择默认的订阅 Select-AzureSubscription -Subscri ...
- sublime前端插件以及常用快捷键
29个常用 Sublime Text 插件推荐 来源:互联网 作者:佚名 时间:06-18 09:27:55 [大 中 小] Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,P ...
- IOS博客
http://www.cnblogs.com/lovecode/articles/2249548.html从这个人这里了解了一些关于uiview和uilayer的区别 以及对于渲染和动画也有了一些了解 ...
- COGS 696. [IOI1996][USACO 2.3] 最长前缀
★ 输入文件:prefix.in 输出文件:prefix.out 简单对比时间限制:1 s 内存限制:128 MB 描述 USACO 2.3.1 IOI96 在生物学中,一些生物的结构 ...
- 将从SQL2008 r2里备份的数据库还原到SQL2008中
从标题可以看出这是未解决上一篇遗留问题写的,现在我也不知道这个可不可以成功,方法似乎查到了一种,具体怎样还不清楚:而且,我想说的是“我踩雷了”. 这篇的主角是“Database Publishing ...
- shiro 配置拦截规则之后css和js等失效
使用shiro作为平台的权限管理工具,shiro的配置文件如下: package com.ros.config; import java.util.LinkedHashMap;import java. ...