Chip Factory(01字典树)
Chip Factory
http://acm.hdu.edu.cn/showproblem.php?pid=5536
Time Limit: 18000/9000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)
Total Submission(s): 280 Accepted Submission(s): 158
At the end of the day, he packages all the chips produced this day, and send it to wholesalers. More specially, he writes a checksum number on the package, this checksum is defined as below:
which i,j,k are three different integers between 1 and n. And ⊕ is symbol of bitwise XOR.
Can you help John calculate the checksum number of today?
The first line of each test case is an integer n, indicating the number of chips produced today. The next line has n integers s1,s2,..,sn, separated with single space, indicating serial number of each chip.
1≤T≤1000
3≤n≤1000
0≤si≤109
There are at most 10 testcases with n>100
#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<algorithm>
#include<queue>
#define maxn 1005
using namespace std;
int tol;
long long val[maxn*];
int tree[maxn*][];
int num[maxn*][];
long long a[maxn]; void init(){
tol=;
tree[][]=tree[][]=;
memset(num,,sizeof(num));
} void add(long long x,int k){
int u=;
for(int i=;i>=;i--){
int v=(x>>i)&;
num[u][v]+=k;
if(!tree[u][v]){
tree[tol][]=tree[tol][]=;
val[tol]=-;
tree[u][v]=tol++;
}
u=tree[u][v];
}
val[u]=x;
} long long query(long long n){
int u=;
for(int i=;i>=;i--){
int v=(n>>i)&;
if(num[u][v^]) u=tree[u][v^];
else u=tree[u][v];
}
return val[u];
} int main(){
int t;
scanf("%d",&t);
while(t--){
int n;
scanf("%d",&n);
init();
for(int i=;i<=n;i++){
scanf("%lld",&a[i]);
add(a[i],);
}
long long tmp;
long long ans=;
for(int i=;i<=n;i++){
add(a[i],-);
for(int j=i+;j<=n;j++){
add(a[j],-);
tmp=a[i]+a[j];
ans=max(ans,tmp^query(tmp));
add(a[j],);
}
add(a[i],);
}
printf("%lld\n",ans);
} }
Chip Factory(01字典树)的更多相关文章
- [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 (字典树)
题目大意:给n个数,编号为1~n,取三个编号不同的数,使表达式(a+b)^c的值最大. 题目分析:将这n个数按二进制位建立一棵trie.枚举i.j的和,查询亦或最大值,但在查询之前要把i.j在trie ...
- HDU 5536 Chip Factory (暴力+01字典树)
<题目链接> 题目大意: 给定一个数字序列,让你从中找出三个不同的数,从而求出:$\max_{i,j,k} (s_i+s_j) \oplus s_k$的值. 解题分析:先建好01字典树,然 ...
- Chip Factory(HDU5536 + 暴力 || 01字典树)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5536 题目: 题意: 对于给定的n个数,求出三个下标不同的数使得(si+sj)^sk最大. 思路: ...
- Chip Factory---hdu5536(异或值最大,01字典树)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5536 题意:有一个数组a[], 包含n个数,从n个数中找到三个数使得 (a[i]+a[j])⊕a[k] ...
- Xor Sum---hdu4825(01字典树模板)
题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=4825 题意:有n个数m个查找,每个查找有一个数x, 从序列中找到一个数y,使得x异或y最大 ...
- Codeforces Round #367 (Div. 2)---水题 | dp | 01字典树
A.Beru-taxi 水题:有一个人站在(sx,sy)的位置,有n辆出租车,正向这个人匀速赶来,每个出租车的位置是(xi, yi) 速度是 Vi;求人最少需要等的时间: 单间循环即可: #inclu ...
- hdu5296 01字典树
根据二进制建一棵01字典树,每个节点的答案等于左节点0的个数 * 右节点1的个数 * 2,遍历整棵树就能得到答案. AC代码: #include<cstdio> using namespa ...
- Choosing The Commander CodeForces - 817E (01字典树+思维)
As you might remember from the previous round, Vova is currently playing a strategic game known as R ...
随机推荐
- poj 3253 Fence Repair (贪心,优先队列)
Description Farmer John wants to repair a small length of the fence around the pasture. He measures ...
- Program.cs 累积_C#
using System; using System.Diagnostics; using System.Threading; using System.Windows.Forms; using Ut ...
- 1070 Mooncake (25 分)
1070 Mooncake (25 分) Mooncake is a Chinese bakery product traditionally eaten during the Mid-Autumn ...
- HttpClient上传下载文件
HttpClient上传下载文件 java HttpClient Maven依赖 <dependency> <groupId>org.apache.httpcomponents ...
- python logging模块使用教程
简单使用 #!/usr/local/bin/python # -*- coding:utf-8 -*- import logging logging.debug('debug message') lo ...
- django (文件操作)
文件传输html中 form表单必须写 文件的一个属性 enctype="multipart/form-data" file_obj = request.FILES.get('fi ...
- phpExcel中文帮助手册
phpExcel中文帮助手册 Admin 2011年11月13日 名人名言:上人生的旅途吧.前途很远,也很暗.然而不要怕.不怕的人的面前才有路.——有岛武郎 下面是总结的几个应用办法 include ...
- UCenter 的目录结构
以下关于文件的阐述以及代码的样例,均以 PHP 程序为例. UCenter 的目录结构 UCenter 分为服务端和客户端 2 个部分.服务端目录为“upload/”,客户端目录为“client/ ...
- 21. orcle导出sql脚本时,提示“超出打开游标最大数”
1.解决办法:修改下打开游标最大数即可 SQL> show parameter open_cursors;NAME TYPE ...
- eclipse运行程序时报java.lang.OutOfMemoryError: Java heap space内存不足问题
System.setProperty("webdriver.firefox.bin", "D:\\Mozilla Firefox\\firefox.exe"); ...