hdoj 5536 Chip Factory 【字典树】
来源:互联网 发布:三星scx3400扫描软件 编辑:程序博客网 时间:2024/06/06 16:56
Chip Factory
Time Limit: 18000/9000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)Total Submission(s): 96 Accepted Submission(s): 51
Problem Description
John is a manager of a CPU chip factory, the factory produces lots of chips everyday. To manage large amounts of products, every processor has a serial number. More specifically, the factory produces n chips today, the i -th chip produced this day has a serial number si .
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:
maxi,j,k(si+sj)⊕sk
whichi,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?
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
Can you help John calculate the checksum number of today?
Input
The first line of input contains an integer T indicating the total number of test cases.
The first line of each test case is an integern , 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 most10 testcases with n>100
The first line of each test case is an integer
There are at most
Output
For each test case, please output an integer indicating the checksum number in a line.
Sample Input
231 2 33100 200 300
Sample Output
6400
题意:给定n个元素,让你从中任意选择三个元素a[i] a[j] a[k] 使得 (a[i] + a[j]) ^ a[k]最大。
思路:建立字典树,枚举a[i]和a[j],删除后,在Trie上查询a[i]+a[j]能够异或得到的最大值,然后恢复Trie,继续下次查询。
AC代码:
#include <cstdio>#include <cstring>#include <cmath>#include <cstdlib>#include <algorithm>#include <queue>#include <stack>#include <vector>#include <map>#define MAXN 30100#define LL long long#define Ri(a) scanf("%d", &a)#define Pi(a) printf("%d\n", (a))#define Rl(a) scanf("%lld", &a)#define Pl(a) printf("%lld\n", (a))#define Rs(a) scanf("%s", a)#define Ps(a) printf("%s\n", (a))#define W(a) while(a--)#define CLR(a, b) memset(a, (b), sizeof(a))#define INF 0x3f3f3f3fusing namespace std;struct Tree{ int next[MAXN][2], word[MAXN]; int L, root; int newnode() { for(int i = 0; i < 2; i++) next[L][i] = -1; word[L++] = 0; return L-1; } void init() { L = 0; root = newnode(); } void Insert(int val) { int u = root, v; for(int i = 30; i >= 0; i--) { v = (val & (1 << i)) ? 1 : 0; if(next[u][v] == -1) next[u][v] = newnode(); u = next[u][v]; word[u]++; } } void Delete(int val) { int u = root, v; for(int i = 30; i >= 0; i--) { v = (val & (1 << i)) ? 1 : 0; u = next[u][v]; word[u]--; } } int Query(int val) { int u = root, v; for(int i = 30; i >= 0; i--) { v = (val & (1 << i)) ? 1 : 0; if(v == 1) { if(next[u][0] != -1 && word[next[u][0]]) u = next[u][0]; else u = next[u][1], val ^= (1 << i); } else { if(next[u][1] != -1 && word[next[u][1]]) u = next[u][1], val ^= (1 << i); else u = next[u][0]; } } return val; }};Tree tree;int a[1010];int main(){ int t; Ri(t); W(t) { int n; Ri(n); tree.init(); for(int i = 1; i <= n; i++) scanf("%d", &a[i]), tree.Insert(a[i]); int ans = 0; for(int i = 1; i <= n; i++) { tree.Delete(a[i]); for(int j = i+1; j <= n; j++) { tree.Delete(a[j]); ans = max(ans, tree.Query(a[i]+a[j])); tree.Insert(a[j]); } tree.Insert(a[i]); } Pi(ans); } return 0;}
0 0
- hdoj 5536 Chip Factory 【字典树】
- hdoj 5536 Chip Factory
- hdu 5536 Chip Factory 字典树
- HDU 5536 Chip Factory 01字典树
- HDU-5536 Chip Factory(字典树)
- HDU 5536 Chip Factory (字典树)
- HDU 5536 Chip Factory(01字典树)
- hdu 5536 Chip Factory(字典树)
- HDU 5536 Chip Factory 【01字典树】
- hdu 5536 Chip Factory(字典树)
- HDU5536 Chip Factory(字典树)
- HDU5536 Chip Factory 【字典树】
- hdu 5536 Chip Factory(水 | 字典树)
- HDU 5536 Chip Factory(字典树+经典应用)
- HDU-5536-Chip Factory【2015长春赛区】【字典树】
- HDU 5536 Chip Factory(暴力 or 01字典树)
- hdu 5536 Chip Factory(01字典树)
- HDU 5536 Chip Factory(暴力/01字典树)
- java的三大框架
- uva 11536——Smallest Sub-Array
- 输入格式控制
- [NOIP 2014]解方程 秦九韶算法+质数取模
- 黑马程序员 Java 基础:IO 流
- hdoj 5536 Chip Factory 【字典树】
- 2015.11.1 [XJOI] NOIP模拟赛总结
- 古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 兔子的规律为数列1,1,2,3,5,8,13,21...
- [NOIP 2009]潜伏者 模拟
- hihocoder王胖浩与三角形【海伦公式+分类讨论】
- asp.net:repeater嵌套(常用于新闻等在首页归类显示)
- matlab生成矩阵
- 【单机版】一个小爬虫+PageRank代码实现
- 深度学习 vs. 概率图模型 vs. 逻辑学