字典树-百度之星-Xor Sum

Xor Sum

Problem Description

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异或值最大。

Sample Input

2

3 2

3 4 5

1

5

4 1

4 6 5 6

3

Sample Output

Case #1:

4

3

Case #2:

4

吐槽:这个题目真烂,跟sum一点关系都没有。

分析:暴力要超时,所以把每个数字转换为长度为32的0-1字符串,用字典树。因为其公共前缀的特性,空间上可以承受。因为是二叉树,用node[SIZE][2]存放。不知道new速度是否会慢很多,所以没用指针。

 

时间: 2025-01-21 16:24:44

字典树-百度之星-Xor Sum的相关文章

2016&quot;百度之星&quot; - 初赛(Astar Round2B)解题报告

此文章可以使用目录功能哟↑(点击上方[+]) 被自己蠢哭,去年还能进一下复赛,今年复赛都没戏了... 链接→2016"百度之星" - 初赛(Astar Round2B)  Problem 1001 区间的价值 Accept: 0    Submit: 0 Time Limit: 10000/5000 mSec(Java/Others)    Memory Limit : 65536 KB  Problem Description  Input  Output  Sample Input

一道百度之星编程大赛题的随笔联想·(2)

百度之星,是全球最大的中文搜索引擎,百度公司面向中国高校学生和编程爱好者所举办的高水平的程序设计大赛.他所考试的题目,全部都是算法的题目. 鄙人虽然是一个.net程序员,在工作之余,喜爱算法. 我觉得这个题目有点意思,故而分享给大家,我想到两种方法,提供大家,希望对大家起了一个开阔思路的作用. 下面介绍解法二了.  解法二,是抓小放大.  由小及大.首先,说一说我分析的思路吧.  第一步,还是判断i是不小于i/2,以此循环了.  第二步,是不是判断此范围的值的累加是不是等于相应某个值. 第三步,

字典树概述

字典树简介 字典树(Trie Tree),又称单词查找树,是键树的一种,典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计. 字典树有3个基本性质: 1.根节点不包含字符,其余的每个节点都包含一个字符: 2.从根节点到某一节点,路径上经过的字符连接起来,为该节点对应的字符串: 3.每个节点的所有子节点包含的字符都不相同. 字典树的结构一般如下图所示: 以字符串为例,我们可以将其存储结构写成如下形式: #define MAX 26 //字符集的大

算法题:HDU 3724 Encoded Barcodes(字典树,计算前缀数)

链接: http://acm.hdu.edu.cn/showproblem.php?pid=3724 题目: Encoded Barcodes Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 1022    Accepted Submission (s): 337 Problem Description All the big mall

算法题:HDU 1251 统计难题(字典树,统计前缀个数)

链接: http://acm.hdu.edu.cn/showproblem.php?pid=1251 题目 Problem Description Ignatius最近遇到一个难题,老师交给他很多单词(只有小写字母组 成,不会有重复的单词出现),现在老师要他统计出以某个字符串为前缀的单词数量(单词本身也是自己的 前缀). Input 输入数据的第一部分是一张单词表,每行一个单词,单词的长度不超过10,它们代表的是老师 交给Ignatius统计的单词,一个空行代表单词表的结束.第二部分是一连串的提

百度之星试题每周一练

百度之星,是全球最大的中文搜索引擎,百度公司面向中国高校学生和编程爱好者所举办的高水平的程序设计大赛.他所考试的题目,全部都是算法的题目. 鄙人虽然是一个.net程序员,在工作之余,喜爱算法. 这个问题非常的巧,故而分享给大家,我想到一种超简单方法,提供大家,希望对大家起了一个开阔思路的作用. 首先,题意是这样的: 八方块移动游戏要求从一个含 8 个数字 (用 1-8 表示) 的方块以及一个空格方块 (用 0 表示) 的 3x3 矩阵的起始状态开始,不断移动该空格方块以使其和相邻的方块互换,直至

字典树+KMP+AC自动机

                                                 <<字典树模板>> 1:字典树,又称单词查找树,Trie树,是一种树形结构,哈希表的一个变种.用于统计,排序和保存大量的字符串(也可以保存其他的).优点就是利用公共的前缀来节约存储空间.在这举个简单的例子:比如说我们想储存3个单词,sky.skyline.skymoon.如果只是单纯的按照以前的字符数组存储的思路来存储的话,那么我们需要定义三个字符串数组.但是如果我们用字典树的话,只需

HDU 4099 字典树+高精度

题意:给出某项斐波那契数的前几位,让输出最小的一项前缀为这个串的项数. 先高精度算出前100000项斐波那契的前50位.并把前40位存进字典树预处理一下.字典树节点值存为第几项.然后输入字符串直接查找. #include <iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; #define N 50 int fib[3][N+1]; cla

算法题:HDU 2846 Repository(字典树,计数)

链接: http://acm.hdu.edu.cn/showproblem.php?pid=2846 题目: Repository Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 1657    Accepted Submission (s): 605 Problem Description When you go shopping,