Xor Sum HDU
来源:互联网 发布:图拉丁 淘宝 编辑:程序博客网 时间:2024/06/06 02:32
题意:
Zeus 和 Prometheus 做了一个游戏,Prometheus 给 Zeus 一个集合,集合中包含了N个正整数,随后 Prometheus 将向 Zeus 发起M次询问,每次询问中包含一个正整数 S ,之后 Zeus 需要在集合当中找出一个正整数 K ,使得 K 与 S 的异或结果最大。Prometheus 为了让 Zeus 看到人类的伟大,随即同意 Zeus 可以向人类求助。你能证明人类的智慧么?
Input
输入包含若干组测试数据,每组测试数据包含若干行。
输入的第一行是一个整数T(T < 10),表示共有T组数据。
每组数据的第一行输入两个正整数N,M(<1=N,M<=100000),接下来一行,包含N个正整数,代表 Zeus 的获得的集合,之后M行,每行一个正整数S,代表 Prometheus 询问的正整数。所有正整数均不超过2^32。
Output
对于每组数据,首先需要输出单独一行”Case #?:”,其中问号处应填入当前的数据组数,组数从1开始计算。
对于每个询问,输出一个正整数K,使得K与S异或值最大。
题解
这道题的话和之前最简单的字典树主要是多了一步delete操作。不然会爆内存的!
代码
#include<bits/stdc++.h>using namespace std;const int MAX_N = 1e3+9;int ans = 0;int res[MAX_N];struct tre{ int val; tre *next[2]; tre() { val = 0; next[0] = next[1] = NULL; }};tre *root ;void creattre(int x){ tre *p = root, *q; for(int i=31; i>=0; i--) { int t = (x>>i)&1; if(p->next[t] == NULL ) { q = new tre; p->next[t] = q; p = p->next[t]; } else { p = p->next[t]; } } p->val = x;}int query(int x){ tre *p = root, *q ; for(int i=31; i>=0; i--) { int t = (x>>i)&1; if(p->next[t^1]) { p = p->next[t^1]; } else { p = p->next[t]; } } return p->val;}void dealnode(tre *x){ if(!x) return ; if(x->next[0]) dealnode(x->next[0]); if(x->next[1]) dealnode(x->next[1]); delete(x);}int main(){ int N,M,T; cin>>T; for(int q=1;q<=T;q++) { root = new tre; cin>>N>>M; for(int i=0; i<N; i++) { int temp; scanf("%d",&temp); creattre(temp); } cout<<"Case #"<<q<<":"<<endl; for(int i=0; i<M; i++) { int temp; scanf("%d",&temp); ans = query(temp); cout<<ans<<endl; } dealnode(root); }}
阅读全文
0 0
- HDU 4825 Xor Sum
- hdu 4825 Xor Sum
- HDU 4825 Xor Sum
- HDU-4825 Xor Sum
- HDU 4825 Xor Sum
- Xor Sum HDU
- Xor Sum HDU
- Xor Sum HDU
- Xor Sum HDU
- HDU 4825-Xor Sum
- hdu 4825 Xor Sum(字典树)
- 【01字典树】HDU 4825 Xor Sum
- hdu 4825 Xor Sum(字典树)
- HDU 4825 Xor Sum(trie树+贪心)
- HDU-4825-Xor Sum【字典树】
- HDU 4825 Xor Sum 01字典树
- HDU 4825 Xor Sum (01字典树)
- HDU-Xor Sum(01字典树)
- java基础知识(一)——LAB1问答题
- 正则表达式贪婪与非贪婪模式
- Servlet入门
- Hadoop生态系统
- C语言特殊要求的字符串问题
- Xor Sum HDU
- PAT乙级1006. 换个格式输出整数 (15)
- Android_数据存储XML
- Caused by: org.apache.ibatis.reflection.ReflectionException: Error instantiating class entity.User w
- 机器学习数据标准和归一化
- java 数值类型和字符串的相互转换
- sql-server基础知识四(视图和索引)
- Shell编程(Shell Script)
- 1042. 字符统计(20)