随笔分类 - 数据结构------>Trie树
摘要:<题目链接> 题目大意: 给定一颗$n$个节点$(n\leq10^5)$,有边权的树,其边权$(0\leq w < 2^{31})$。让你求出这棵树上任意两个节点之间的异或最大值。 解题分析: 先用DFS预处理出根节点到所有节点的路径异或值,然后任意两点$u,v$之间的路径异或值就能通过 $(u->
阅读全文
posted @ 2019-04-30 21:16
悠悠呦~
摘要:<题目链接> 题目大意:给定一个序列,现在求出两段不相交的区间异或和的最大值。 解题分析: 区间异或问题首先想到01字典树。利用前缀、后缀建树,并且利用异或的性质,相同的两个数异或变成0,从而将前缀操作转化为区间操作,比如:$(a_1 \oplus a_2)\oplus(a_1 \oplus a_2
阅读全文
posted @ 2019-03-02 20:21
悠悠呦~
摘要:<题目链接> 题目大意: 给定一个数字序列,让你从中找出三个不同的数,从而求出:$\max_{i,j,k} (s_i+s_j) \oplus s_k$的值。 解题分析:先建好01字典树,然后枚举两个不同的数,从字典树中删除这两个数,然后进行匹配,找到能够使 $ (s_i+s_j) \oplus s_
阅读全文
posted @ 2019-03-02 12:45
悠悠呦~
摘要:<题目链接> 题目大意: 给定n个数,进行m次查找,每次查找输出n个数中与给定数异或结果最大的数。 解题分析: 01字典树模板题,01字典树在求解异或问题上十分高效。利用给定数据的二进制数进行建树,然后在查找的时候,利用贪心的策略,优先寻找与当前位数的0、1值不同的路线,从而达到异或值最大的目的。
阅读全文
posted @ 2019-03-02 10:35
悠悠呦~
摘要:<题目链接> 题目大意: 给定两个长度为n的序列,可以改变第二个序列中数的顺序,使得两个序列相同位置的数异或之后得到的新序列的字典序最小。 解题分析: 用01字典树来解决异或最值问题。因为是改变第二个序列的顺序,即按照第一个序列的顺序输出异或结果,所以我们将第二个序列建树。然后用第一个序列在树上进行
阅读全文
posted @ 2019-03-01 23:55
悠悠呦~
摘要:<题目链接> 题目大意: 现在给定出n个字符串,并且进行m此询问,每次询问给出一个匹配串,每次询问都给出该匹配串能够匹配的字符串个数(题目只出现字符'a'~'e')。'?'可以看成任意字符,也可以看做没有。 解题分析: 对这n个字符串建立Trie树,然后对每次输入的匹配串在trie树上进行模糊匹配,
阅读全文
posted @ 2019-02-22 22:54
悠悠呦~
摘要:<题目链接> 题目大意: 输入7e4个长度为9的字符串,每个字符串中只出现0~9这几种数字,现在需要你输出每个母串中最短的特有子串。 解题分析: 利用Trie树进行公共子串的判定,因为Trie树的特性是对节点的前缀字符串进行操作,所以为了转换成对母串中任意区间的字符串进行操作,我们对母串中的所有后缀
阅读全文
posted @ 2019-02-01 22:27
悠悠呦~
摘要:<题目链接> 题目大意:给定一个只有小写字母组成的目标串和m个模式串(里面可能有大写字母),记目标串反过来后的串为S,让你从m个模式串中选出若干个组成S串(不区分大小写)。输出任意一种方案。 解题分析:将所有单词倒着建好Trie树后(字母忽略大小写),直接在Trie树上跑DFS,记录下所有符合条件的
阅读全文
posted @ 2018-11-03 16:40
悠悠呦~
摘要:<题目链接> 题目大意:输入n个单词构成单词库,然后进行m次查询,每次查询输入一个单词(注意这些单词只由a,b,c构成),问该单词库中是否存在与当前查询的单词有且仅有一个字符不同的单词。 解题分析:本题将单词库中所有的单词先建trie树,然后进行容错数为1的字符串匹配,主要是在trie树上跑DFS,
阅读全文
posted @ 2018-11-01 20:19
悠悠呦~
摘要:<题目链接> 题目大意:给你几段只包含0,1的序列,判断这几段序列中,是否存在至少一段序列是另一段序列的前缀。 解题分析: Trie树水题,只需要在每次插入字符串,并且在Trie树上创建节点的时候,判断路径上是否已经有完整的单词出现即可。 数组版: 指针版: 2018-10-30
阅读全文
posted @ 2018-10-30 20:24
悠悠呦~
摘要:<题目链接> 题目大意: 给你一些单词,要求输出将该单词完全分成前、后两个单词之后,若这两个单词都在单词库中出现,则输出该单词。 解题分析: 将每个单词的每一位能够拆分的位置全部暴力枚举一遍,若拆分后的两个单词都在单词库中,则直接输出该单词即可,拆分单词的时候用strncpy()函数比较方便。 20
阅读全文
posted @ 2018-10-29 23:43
悠悠呦~
摘要:<题目链接> 题目大意: 找出能唯一标示一个字符串的最短前缀,如果找不出,就输出该字符串。 解题分析: Trie树的简单应用,对于每个单词的插入,都在相应字符对应的节点 num 值+1 ,这样在查询的时候,如果遍历到num值为1的节点,就可以确定,该前缀能够唯一确定一个字符串,或者是一直遍历到NUL
阅读全文
posted @ 2018-10-29 12:45
悠悠呦~
摘要:<题目链接> 题目大意: 刚开始每行输入两个单词,第二个单词存入单词库,并且每行第二个单词映射着对应的第一个单词。然后每行输入一个单词,如果单词库中有相同的单词,则输出它对应的那个单词,否则输出“eh”。 解体分析: 本题是trie树的模板题,在建树的时候,在每个单词的结尾节点储存对应单词的序号即可
阅读全文
posted @ 2018-10-28 23:50
悠悠呦~
摘要:<题目链接> 题目大意: 给你一堆字符串,让你按字典序输出他们出现的频率. 解题分析: 首先,这是Trie数词频统计的题目,以Trie树的边储存字母,节点存储以该节点结尾的链所代表的字符串的数量,最后用dfs寻找Trie树中所有的单词,下面代码是用数组实现的Trie树。当然,本题也可用快排或者map
阅读全文
posted @ 2018-10-26 23:57
悠悠呦~
摘要:<题目链接> 统计难题 Problem Description Ignatius最近遇到一个难题,老师交给他很多单词(只有小写字母组成,不会有重复的单词出现),现在老师要他统计出以某个字符串为前缀的单词数量(单词本身也是自己的前缀). Input 输入数据的第一部分是一张单词表,每行一个单词,单词的
阅读全文
posted @ 2018-04-08 00:33
悠悠呦~
浙公网安备 33010602011771号