##传送门 ##题意 给定$N$个表示电话号码的字符串,判断这N个字符串中是否存在一个为另一个的子串,存在则不兼容输入$NO$ ###数据范围 $1\leq T\leq 40$ $1\leq N\leq 10^{4}$ ##题解 建立一个字典树,在插入字符串的同时进行如下判断 判断树中有没有当前插入 ...
分类:
其他好文 时间:
2020-07-28 00:01:19
阅读次数:
76
简述 字典树又称tire树,其为哈希树的变种,哈希树存的是键值字典树存的是字符。字典树用于统计,排序和保存大量字符,常用于搜索引擎,其本质是用字符串的公共前缀来优化查询。其查询过程就像我们在查新华字典,查询时间为O(len)。 树的样子 假设我们要存以下字符串:"to","tea","ted","t ...
分类:
其他好文 时间:
2020-07-27 13:40:10
阅读次数:
68
题目链接:https://www.acwing.com/problem/content/258/ 题目给出长度为n的序列,操作有两种,求[p,n]段的异或和再与x的异或,或者增加一个数x,使用可持久化Trie和异或前缀和可以解决,但是需要在[l-1,r-1]区间内,右区间自然满足,左区间的话需要加上 ...
分类:
编程语言 时间:
2020-07-25 23:31:49
阅读次数:
75
字典树是一种实现字符串快速检索的多叉树结构。每个节点都拥有很多个指针。 模板提https://www.acwing.com/problem/content/144/。 1 #include <iostream> 2 #include <string> 3 using namespace std; 4 ...
分类:
其他好文 时间:
2020-07-24 21:16:00
阅读次数:
64
Trie字符串统计 维护一个字符串集合,支持两种操作: “I x”向集合中插入一个字符串x; “Q x”询问一个字符串在集合中出现了多少次。 共有N个操作,输入的字符串总长度不超过 105105,字符串仅包含小写英文字母。 输入格式 第一行包含整数N,表示操作数。 接下来N行,每行包含一个操作指令, ...
分类:
其他好文 时间:
2020-07-24 21:14:58
阅读次数:
68
[ZJOI2015]诸神眷顾的幻想乡 题意 树上每个点代表一个字符,问树上路径可以组成多少不同的字符串(叶子最多有20个) 题解 树上的路径一定是叶子为根的一条从上到下的路径,而叶子有很小,我们就可以把所有叶子构成的 trie 建成一个广义的 sam,最后统计不同字串个数即可 #include<io ...
分类:
其他好文 时间:
2020-07-24 19:08:01
阅读次数:
67
题目链接 #解题思路 将所有的字符串编码看成是一棵trie,因为所有的字符串都不互为前后缀,所以每一个字符串都末尾都位于trie的叶子结点上。 因为要确保总长度最小,所以对于出现次数越多的字符串,其叶子在trie上的深度就越浅,那么出现次数越少的字符显然其叶子深度也就越深。所以可以用出现次数做权值, ...
先看B,发现是李超树套线段树简单题。 然而空间比较卡,不敢写。 动态半平面交不会。 再看A,首先以为要字典序排序,但是后来发现是假的。 想了一会发现建出字典树就是简单题,然而由于怕爆空间不敢写。 看C,想到把k提到根,但是之后一点思路都没有。 回头看B发现只需要cdq分治+线段树分治就能把空间去掉一 ...
分类:
其他好文 时间:
2020-07-22 15:48:58
阅读次数:
49
字典树 字典树比较普通字符串比较而言,字符的可操作性更强 const int maxn=5e5+5; //maxn为总结点个数,不是总深度 struct trie{ int nex[maxn][26],cnt=0; bool exist[maxn]; void insert(string s){ i ...
分类:
其他好文 时间:
2020-07-21 14:19:54
阅读次数:
64