题意:给定n个数字,第i个数字为a[i],求max((a[i]+a[j])^a[k]),其中i,j,k互不相同

n<=1000,0<=a[i]<=1e9

思路:队友写的,抱大腿

先对于a[i]建立Trie树

枚举i和j后删除Trie中的i和j,然后就是经典的Trie树应用:优先朝与a[i]+a[j]的当前位不同的方向走,能获得最大xor和

 #include<bits/stdc++.h>
using namespace std;
#define LL long long
const int maxn=1e3+;
int a[maxn*maxn][];
int b[maxn],num[maxn*maxn*],tot;
void init()
{
tot=;
}
void insert (int x)
{
int rt=;
for(int i=;i>=;i--)
{
int g=(x>>i)&;
if(a[rt][g]==)
{
a[rt][g]=++tot;
}
rt=a[rt][g];
num[rt]++;
}
}
void del(int x)
{
int rt=;
for(int i=;i>=;i--)
{
int g=(x>>i)&;
rt=a[rt][g];
num[rt]--;
}
}
int find(int x)
{
int rt=;
int sum=;
for(int i=;i>=;i--)
{
int g=(x>>i)&;
// printf("%d %d %d\n",g,a[rt][!g],a[rt][g]);
if(a[rt][!g]==||num[a[rt][!g]]==)
{
rt=a[rt][g];
}
else
{
// printf("i = %d\n",i);
rt=a[rt][!g];
sum+=<<i;
}
//printf("%d\n",sum);
}
return sum;
}
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
init();
int n;
scanf("%d",&n);
for(int i=;i<=n;i++)
{
scanf("%d",&b[i]);
insert(b[i]);
}
int ma=;
for(int i=;i<=n;i++)
for(int j=i+;j<=n;j++)
{
del(b[i]);
del(b[j]);
// printf("%d\n",find(b[i]+b[j]));
// puts("sdadas");
ma=max(ma,find(b[i]+b[j]));
insert(b[i]);
insert(b[j]);
}
for(int i=;i<=tot;i++)
{
a[i][]=a[i][]=;
num[i]=;
}
printf("%d\n",ma);
}
}

【HDOJ5536】Chip Factory(Trie树)的更多相关文章

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

    /** 题目:hdu5536 Chip Factory 链接:http://acm.hdu.edu.cn/showproblem.php?pid=5536 题意:给定n个数,令X=(a[i]+a[j] ...

  2. HDU 5536/ 2015长春区域 J.Chip Factory Trie

    Chip Factory Problem Description John is a manager of a CPU chip factory, the factory produces lots ...

  3. HDU 5536 Chip Factory 字典树

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

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

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

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

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

  6. HDU 5536 Chip Factory Trie

    题意: 给出\(n(3 \leq n \leq 1000)\)个数字,求\(max(s_i+s_j) \bigoplus s_k\),而且\(i,j,k\)互不相等. 分析: 把每个数字看成一个\(0 ...

  7. Chip Factory(01字典树)

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

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

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

  9. hdu 5536 Chip Factory (01 Trie)

    链接:http://acm.hdu.edu.cn/showproblem.php?pid=5536 题面; Chip Factory Time Limit: 18000/9000 MS (Java/O ...

随机推荐

  1. 在windows上搭建镜像yum站的方法

    在windows上搭建镜像yum站的方法(附bat脚本)   分类: 运维基本功,其他   方法一:支持rsync的网站 对于常用的centos.Ubuntu.等使用官方yum源在 http://mi ...

  2. 自动化运维工具——ansible模板与roles(四)

    一. 模板Templates 文本文件,嵌套有脚本(使用模板编程语言编写) Jinja2语言,使用字面量,有下面形式 字符串:使用单引号或双引号 数字:整数,浮点数 列表:[item1, item2, ...

  3. Vue-Router基础学习笔记

    1.安装vue-router npm install vue-router yarn add vue-router 2.引入注册vue-router import Vue from 'vue' imp ...

  4. INNODB insert query end state

    innodb_flush_log_at_trx_commit=2 innodb_flush_method=O_DIRECT (for non-windows machine) innodb_buffe ...

  5. Python知识点入门笔记——基本运算和表达式

    变量:Python的变量不需要单独定义,直接在赋值的过程中完成定义. 当直接运行一个没有赋值过的变量时,会报错. 当不需要某个变量时,可以用del来删除 每个变量都占据着一定的内存空间,当变量被删除了 ...

  6. selenium中webdriver跳转新页面后定位置新页面的两种方式

    刚刚在写Python爬虫的时候用到了selenium , 在跳转新页面时发现无法定位新页面 , 查找不到新页面的元素 一番查询后得到了解决方法 , 便记录下来备忘 , 也与大家分享 # 页面跳转代码. ...

  7. kubernetes dashboard permission errors

    kubernetes dashboard 的权限错误 warning configmaps is forbidden: User "system:serviceaccount:kube-sy ...

  8. stark组件前戏(3)之django路由分发的本质include

    django路由分发的三种方式 方式一: from django.urls import re_path, include urlpatterns = [ re_path(r'^web/', incl ...

  9. Python开发不可不知的虚拟环境

    一.python3.3之后自带的venv模块 1. 创建虚拟环境 python3.6 -m venv project-env 2. 加入虚拟环境目录 cd pronject-env 3. 激活虚拟环境 ...

  10. 51nod 1202 不同子序列个数(计数DP)

    1202 子序列个数 基准时间限制:1 秒 空间限制:131072 KB 分值: 40      子序列的定义:对于一个序列a=a[1],a[2],......a[n].则非空序列a'=a[p1],a ...