【HDOJ5536】Chip Factory(Trie树)
题意:给定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树)的更多相关文章
- 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] ...
- HDU 5536/ 2015长春区域 J.Chip Factory Trie
Chip Factory Problem Description John is a manager of a CPU chip factory, the factory produces lots ...
- 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 字典树+贪心
给你n个数,a1....an,求(ai+aj)^ak最大的值,i不等于j不等于k 思路:先建字典树,暴力i,j每次删除他们,然后贪心找k,再恢复i,j,每次和答案取较大的,就是答案,有关异或的貌似很多 ...
- hdu 5536 Chip Factory 字典树+bitset 铜牌题
Chip Factory Time Limit: 18000/9000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)T ...
- HDU 5536 Chip Factory Trie
题意: 给出\(n(3 \leq n \leq 1000)\)个数字,求\(max(s_i+s_j) \bigoplus s_k\),而且\(i,j,k\)互不相等. 分析: 把每个数字看成一个\(0 ...
- 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字典树)
Problem Description John is a manager of a CPU chip factory, the factory produces lots of chips ever ...
- hdu 5536 Chip Factory (01 Trie)
链接:http://acm.hdu.edu.cn/showproblem.php?pid=5536 题面; Chip Factory Time Limit: 18000/9000 MS (Java/O ...
随机推荐
- linux替换yum源及配置本地源
linux系统安装后自带的bash源由于在国外,安装软件包的时候会非常慢,最好替换一下yum源. 关于yum源的简单介绍 yum的主要功能是更方便地添加,删除和更新rpmba ...
- 微信小程序js学习心得体会
微信小程序js学习心得体会 页面控制的bindtap和catchtap 用法,区别 <button id='123' data-userDate='100' bindtap='tabMessag ...
- 十七、MySQL UNION 操作符
MySQL UNION 操作符 本教程为大家介绍 MySQL UNION 操作符的语法和实例. 描述 MySQL UNION 操作符用于连接两个以上的 SELECT 语句的结果组合到一个结果集合中.多 ...
- CentOS7安装Nginx、MySQL、PHP
之前才网上找了好多文章,但是配置总会出错,后来傻傻的发现官方文档都有的,当然配合网上文章说明更好,因此本文只说一个大概 安装PHP 官方配置 配置用户和用户组,需要有根目录权限 vim /usr/lo ...
- tp5 修改自带success或error跳转模板页面
tp5 修改自带success或error跳转模板页面 我们在使用tp5或者tp3.2的时候,用的成功或者失败跳转提示页面一般是用框架的.在后续开发过程中,根据实际项目需要,也是可以更改的,在此分享一 ...
- python3 练习题100例 (十)
题目十:判断101-200之间有多少个素数,并输出所有素数. #!/usr/bin/env python3 # -*- coding: utf-8 -*- """ 题目十 ...
- jmeter XML格式的结果中各属性的含义
最近在搞jmeter,生成xml的测试报告,对报告字段进行解释,可能是自己不会找,网上资源不多,好不容易找到的,记录下来: 感谢博主:http://blog.163.com/zhang_jing/bl ...
- 图学java基础篇之IO
java io体系 如图可以看出,java的io按照包来划分的话可以分为三大块:io.nio.aio,但是从使用角度来看,这三块其实揉杂在一起的,下边我们先来概述下这三块: io:主要包含字符流和字节 ...
- HDU 2177 取(2堆)石子游戏
取(2堆)石子游戏 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total S ...
- laravel5.2总结--服务提供者,契约(Contracts)
首先理解两个概念 1.契约:一组定义了框架核心服务的接口 2.服务提供者:所有 Laravel 应用程序启动的中心所在. 包括你自己的应用程序,以及所有的 Laravel 核心服务,都是通过服务提供者 ...