2014年百度之星程序设计大赛 - 资格赛 第三题 Xor Sum
来源:互联网 发布:一洋淘宝运营助手 编辑:程序博客网 时间:2024/04/29 17:11
小记:艹蛋呢, 取long long的低30,32,34位都WA, 取31位才AC。。。
思路:根据求数组中两个数异或最大值,参考
代码:
#include <stdio.h>#include <string.h>#define MAX(a,b) ((a)>(b)?(a):(b))#define NODE 3200010#define N 100010int n;int v[N];int node;int next[NODE][2];int end[NODE];void add(int cur,int k) { memset(next[node],0,sizeof(next[node])); end[node]=0; next[cur][k]=node++;}int cal(int x) { int i,k,cur=0; for(i=30; i>=0; i--) { k=((1<<i)&x)?0:1; if(next[cur][k]) cur=next[cur][k]; else cur=next[cur][1-k]; } return end[cur];}int main() { int n, i, ans, T, m, t,x, cur, j, k; scanf("%d", &T); for(int Ca = 1; Ca <= T; ++Ca) { scanf("%d%d", &n, &m); node=1; memset(next[0],0,sizeof(next[0])); for(i=0; i<n; i++) { scanf("%d",&x); v[i]=x; cur=0; for(j=30; j>=0; j--) { k=((1<<j)&x)?1:0; if(next[cur][k]==0) add(cur,k); cur=next[cur][k]; } end[cur]=x; } printf("Case #%d:\n",Ca); for (i = 0; i < m; ++i) { scanf("%d", &t); ans = cal(t); printf("%d\n", ans); } } return 0;}
0 0
- 2014年百度之星程序设计大赛 - 资格赛 第三题 Xor Sum
- 2014年百度之星程序设计大赛 - 资格赛 Xor Sum
- 2014年百度之星资格赛第三题Xor Sum
- HDU-4825 Xor Sum (Trie 字典树 2014年百度之星程序设计大赛-资格赛)
- 2014年百度之星程序设计大赛 - 资格赛 Energy Conversion
- 【索引】2014年百度之星程序设计大赛 - 资格赛
- 2014年百度之星程序设计大赛 - 资格赛 Labyrinth
- 2014年百度之星程序设计大赛 - 资格赛Energy Conversion
- 2014年百度之星程序设计大赛 - 资格赛题解
- 2014年百度之星程序设计大赛 - 资格赛 (未完成)
- 2014 百度之星 资格赛 Xor Sum hdu 4825
- 2014百度之星资格赛解题报告:Xor Sum
- 2014百度之星资格赛——XOR SUM
- 2014百度之星资格赛——XOR SUM
- 2014年百度之星程序设计大赛 - 资格赛 第四题 Labyrinth
- 2014年百度之星程序设计大赛 - 资格赛 第一题 Energy Conversion
- 2014年百度之星程序设计大赛 - 资格赛 第二题 Disk Schedule
- 2014年百度之星程序设计大赛 - 资格赛 第一题 Energy Conversion
- 做数据格式转换的DatatypeConverter类的例子程序
- php mysql_query中insert结果偏差
- 黑马程序员-用for语句嵌套输出九九乘法表
- 关于ListView异步加载图片导致图片显示混乱以及ListView ...
- 【贪心算法】汽车加油问题
- 2014年百度之星程序设计大赛 - 资格赛 第三题 Xor Sum
- 代码布局
- 如何防止域名被盗——默默出品
- Win7系统无法删除打印机驱动怎么办?
- IOS工程自动打包并发布脚本实现
- 读取txt文件统计文章里"java"字符串出现的次数
- 互联网宝宝扩容,移动端成新战场
- 符号表的索引实现-使用3个数组实现
- STL常见用法整理_remove_if