随笔分类 - 字符串
摘要:
传送门 解题思路: 对于每个询问串的查询可以改为以节点为后缀来统计有多少个查询串在里面然后来统计答案。拿下面这个例子来说: 3 1 a bb abb aabb 首先对查询串(n个串)构建AC自动机,对于每个字符串结尾位置的状态p设置sum[p] = 1, 同时插入的时候维护每个状态的长度len[p]
阅读全文

摘要:
传送门 解题思路: ** 首先考虑如果字符集大小不是1e5的写法:如果字符集大小为26,我们首先对于这整棵树求出子树大小,然后构建出AC自动机的fail指针,我们会发现每个点的答案就是fail指针上所有结点的子树大小,下面是原树。** ** 我们可以把边权转化为点权来理解,也就是把每条边父亲与儿子的
阅读全文

摘要:
传送门 题目大意 ** 有T组测试数据,对于每组测试时局有一个n和m,n表示初始拥有的字符串数量,m表示操作数量。紧接着输入n个字符串,再读入m行操作,每行以x str的形式给出,如果x为1则是往所拥有的字符串内插入str,若x为2则是查询当前字符串包括了多少完整的字符串(重复出现也算)。** **
阅读全文

摘要:
传送门 题目大意: ** 给出两个字符串S和T,求出两个字符串之间有多少长度大于K的公共子区间。** ** 由于每一个子串都是包含在某一个后缀的前缀里面,求出sa和height了之后,我们可以将height进行分组,height < k为分割线,这样一来每个组内都是height >= k的后缀。我们
阅读全文

摘要:
题目链接 ** 对于给定的字符串s我们算出它每个位置能到达的前缀最大合法位置,然后进行dp即可** ** 先对于s串求一遍kmp,然后建立boder树,在boder树上进行倍增查找最大合法位置** ** 因为倍增查不到会返回0,但是0号点又是boder树的根节点,所以将boder树上点+1,然后查找
阅读全文
