字典树 电玩女神 2022-07-15 10:16 147阅读 0赞 ## Problem H: 位运算的游戏 ## Time Limit: 2 Sec Memory Limit: 128 MB Submit: 4 Solved: 2 \[ [Submit][]\]\[ [Status][]\]\[ [BBS][]\] ## Description ## 大家都知道位运算对于学计算机的人来说是很重要的,因为他运算效率最高。自从知道了这一点之后,毛毛雨就研究了一个游戏让自己练习位运算。游戏是这样的给你一个有N个整数的数组A,然后有Q中操作,每次操作给你一个整数X,让你求X和数组A中每个元素异或的最大值。现在毛毛雨正在出线段树的题,所以需要你们帮忙了,聪明的你们能帮他解决吗? ## Input ## 每组数据第一行输入两个整数N和Q(0<=N,Q<=100000),第二行输入A(0<=A\[i\]<=1000000000)数组的N个整数。 当N和Q都等于0的时候结束输入。 ## Output ## 每组数据的每个询问输出一个整数(异或的最大值),占一行。 ## Sample Input ## 10 5 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 0 0 ## Sample Output ## 11 11 11 14 15 题目大意:给你n个数,m个操作 给你一个数分别于这n个数异或找出最大的值并输出 题目思路:这题最开始是在cf上看到的,,当时听了别人说用字典树,,然后仔细分析下,,确实可以用字典树,,字典树存每个数的二进制数,最多31位,因为要异或最大所以从最高位开始如果是0就要找1,是1就要找0,,如果找到就 ans|=(1<<i) 最后ans就是答案 AC代码: #include<iostream> #include<cstdio> #include<algorithm> #include<cstring> #include<queue> using namespace std; struct trie{ struct trie *Next[2]; trie(){ for(int i=0;i<2;i++) Next[i]=NULL; } }; trie *head; void BuildTrie(int str[]){ trie *p = head; int id; for(int i=31;i>=0;i--){ id = str[i]; if(p->Next[id]==NULL){ p->Next[id]= new trie; } p=p->Next[id]; } } int QuarryTrie(int str[]){ int id,ans=0; trie *p = head; for(int i=31;i>=0;i--){ id = str[i]; if(p->Next[id^1]){ ans|=(1<<i); p=p->Next[id^1]; } else { p=p->Next[id]; } } return ans; } int main() { int n,m; while(scanf("%d%d",&n,&m)&&(n+m)){ head = new trie; for(int i=0;i<n;i++){ int x;scanf("%d",&x); int num[32],cnt=0; memset(num,0,sizeof(num)); while(x){num[cnt++]=x%2;x>>=1;} BuildTrie(num); } while(m--){ int x;scanf("%d",&x); int num[32],cnt=0; memset(num,0,sizeof(num)); while(x){num[cnt++]=x%2;x>>=1;} printf("%d\n",QuarryTrie(num)); } } return 0; } [Submit]: http://acm.ccniit.com/JudgeOnline/submitpage.php?cid=1255&pid=7&langmask=1012 [Status]: http://acm.ccniit.com/JudgeOnline/problemstatus.php?id=2509 [BBS]: http://acm.ccniit.com/JudgeOnline/phpbb.php?pid=2509&cid=1255
相关 字典树 字典树 Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^\_^ 题目描述 遇到单词不认识怎么办? 查字 ゞ 浴缸里的玫瑰/ 2022年08月18日 02:28/ 0 赞/ 168 阅读
相关 字典树 字典树又称单词查找树,Trie树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它 你的名字/ 2022年08月02日 14:59/ 0 赞/ 157 阅读
相关 字典树 Trie,又称字典树,前缀树(prefix tree),是一种树形结构,用于保存大量的字符串。 它的优点是:利用字符串的公共前缀来节约存储空间。查找、插入复杂度为O(n),n 电玩女神/ 2022年08月01日 00:08/ 0 赞/ 153 阅读
相关 字典树 Problem H: 位运算的游戏 Time Limit: 2 Sec Memory Limit: 128 MB Submit: 4 Solved: 2 电玩女神/ 2022年07月15日 10:16/ 0 赞/ 148 阅读
相关 字典树 Problem Description 遇到单词不认识怎么办? 查字典啊,已知字典中有n个单词,假设单词都是由小写字母组成。现有m个不认识的单词,询问这m个单词是否出现在 不念不忘少年蓝@/ 2022年07月12日 05:51/ 0 赞/ 192 阅读
相关 字典树 一、引入 [点击打开链接][Link 1] 字典是干啥的?查找字的。 字典树自然也是起查找作用的。查找的是啥?单词。 看以下几个题: 1、给出n个单词和m个询问 今天药忘吃喽~/ 2022年06月16日 08:21/ 0 赞/ 212 阅读
相关 字典树 题目链接:[点击打开链接][Link 1] 代码: include<iostream> include<cstring> using namespa 不念不忘少年蓝@/ 2022年05月30日 05:46/ 0 赞/ 175 阅读
相关 字典树 1 定义 键树又称数字查找树,它是一棵度大于2的树,树中的每个节点值含有组成关键字的符号。例如,若关键字是数值,则节点中只包含一个数位。若关键字是单词,则节点中只包含一个 r囧r小猫/ 2022年04月10日 01:47/ 0 赞/ 245 阅读
相关 字典树 字典树是一种以树这种结构为基础建立的算法 ,那么字典树到底有哪些典型的应用呢? 1.字典树在串的快速检索中的应用。 给出N个单词组成的熟词表,以及一篇全用小写英文 绝地灬酷狼/ 2022年03月19日 04:20/ 0 赞/ 238 阅读
相关 字典树 字典树 前言 利用指针实现 用数组实现 前言 介绍 字典树又称单词查找树,Trie树,是一种树形结构,是一种哈希树的变种。典型应用是用 男娘i/ 2021年11月09日 15:52/ 0 赞/ 280 阅读
还没有评论,来说两句吧...