![](https://img-blog.csdnimg.cn/20210226100435309.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
ACM字典树【前缀树+后缀数】
字典树是搜索引擎常用算法
凌晨小街
别nullptr了
展开
-
HDU4825 Xor Sum(异或贪心 + 前缀树 + 状态压缩)
这道题搞了我两个小时,hhh,新手崩溃题目贴上:题目大意:A这个人有一个数组,现在B每说出一个数,你都要在A里面找一个数,使得这两个数的异或是最大的,输出在A里面找出的数题目思路:将A这个人所有的数化成二进制进行压缩一下,我们先预存储所有A数组,注意,求二进制数的时候,我们要将得出的二进制字符串反转,因为根据贪心规则,我们每次优先变换高位的匹配数字,这样子可以确保我们得到的结果尽可能符号和尽可能大然后由于数字的二进制位串是不一致的,比如1和4,在经过上面的反转后分别为1和100,所以我们要在十进制原创 2021-02-26 17:29:14 · 234 阅读 · 0 评论 -
HDU1247 Hat’s Words(前缀树 + 字符串处理)
题目贴上:题目大意:首先给你一系列字符串,需要你找出是否存在某个字符串由给定的另外两个单词顺序串接而成,存在输出这个字符串,输入直至文件末题目思路:首先将所有单词存入一棵前缀树当中,然后遍历每个字符串,对字符串进行切割(最小长度为1,最大不能等于这个原字符串长度),将切割出来的两个字符串在前缀树中搜索,如果都存在,输出这个原字符串。题目的坑点:我设想了一种情况,比如给定有a,aa,而aa可以分割成两个a,我认为aa不符合情况,因为题目说是“另外两个字符串”,我潜意识认为这另外两个字符串应该不相同,然原创 2021-02-26 14:33:20 · 179 阅读 · 0 评论 -
HDU1671 Phone List(前缀树扩展)
题目贴上:题目大意:给你一系列号码,如果存在某个号码是其他号码的前缀,输出NO,否则输出YES题目思路:仍然是前缀树的裸题。只不过这道题目个平常前缀树不一样的地方是,这个题目里面存的全是数字,以前我们做的都是存储小写字母,这是第一个注意点,第二个注意点是,如果这个题目开1e6多空间会MLE,所以适当缩小数组到1e5(链表使用者忽略)如果对于每个字符,其在前缀树上终结点被访问的次数超过一次(肯定是有一次的,因为每个字符串的本身就是本身的前缀),则输出NO,否则输出YES。前缀树预处理一下,时间复原创 2021-02-26 13:32:36 · 141 阅读 · 0 评论 -
HDU1251 统计难题(经典前缀树入门题)
题目大意:给你一系列单词,然后再给你一系列查询,问你每个查询的字符串是哪几个单词的前缀,输出每个单词查询的前缀个数,单词长度不超过10题目思路:这道题目可以用hash来做,但我是学习前缀树来着,看hash干哈(一边去 )首先我们根据已有单词创建一颗前缀树(不知道前缀树是什么?百度吧骚年)创建一个trie数据结构,作为前缀树,前缀树的模板// 字典树(前缀树)struct trie{ int tree[1000008][26],cnt; int color[1000008]; // 插入一个原创 2021-02-26 12:37:38 · 338 阅读 · 0 评论