后缀自动机SAM
WorldWide_D
这个作者很懒,什么都没留下…
展开
-
后缀自动机学习小记
好像很久没有写blog了…例题【SPOJ】 Longest Common Substring II 题目大意:给出N(N <= 10)个长度不超过100,000的字符串,求他们的最长公共连续子串。 限制: Time limit: 0.236s Source limit: 50000B Memory limit: 1536MB分析哈希首先想到用二分+hash,这里不细讲了 但是O(原创 2016-02-04 22:42:25 · 1369 阅读 · 2 评论 -
[51nod1647]小Z的trie
Description小Z打算去冲击省选,于是开始学习trie。 有一天,他得到了N个字符串。 他先建立一个根节点,对于每一个字符串,他都从根节点开始一点点插入。 小Z不满足于此。他的大脑里盘旋着M个问题: 如果给定一个二元组(s,t)(s,t都是trie中的节点且s是t的祖先), 存在多少个二元组(x,y)(x,y都是trie中的节点且x是y的祖先), 满足s~t路径上的字符串和原创 2016-07-18 20:36:56 · 703 阅读 · 0 评论 -
[codeforces616F]Expensive Strings
题目大意给出n个字符串以及一个n个元素的c数组。 定义一个字符串s的价值为:∑i=1nc[i]∗p[s][i]∗|s|\sum_{i=1}^n c[i]*p[s][i]*|s| 其中p[s][i]为字符串s在第i个字符串中出现的次数。 求价值最大的字符串的价值。数据范围n≤100000 字符串总长≤500000 ci的绝对值不超过10710^7分析答案肯定是n个字符串中的某一个串的子串原创 2016-07-14 20:46:07 · 482 阅读 · 0 评论 -
[bzoj2534]Uva10829L-gap字符串
题目描述有一种形如uvu形式的字符串,其中u是非空字符串,且V的长度正好为L,那么称这个字符串为L-Gap字符串 给出一个字符串S,以及一个正整数L,问S中有多少个L-Gap子串. L≤10 字符串长≤50000分析这道题难度挺大的。。。 考虑一个合法的UVU串。假设两个U结束位置分别是i,j(i < j)。 设两个前缀i,j的最长公共后缀长度为len。那么i,j合法时满足以下两个条件:原创 2017-02-28 22:33:58 · 442 阅读 · 0 评论 -
[bzoj2780][Spoj]8093 Sevenk Love Oimaster
题目大意给定n个字符串,q个询问,每个询问给定一个字符串,求它在n个字符串中多少个中以连续子串形式出现。n<=10000, q<=60000 the total length of n strings<=100000, the total length of q question strings<=360000分析首先很容易想到后缀自动机。 给n个字符串建广义后缀自动机,然后每个询问串就在原创 2017-03-16 22:31:30 · 847 阅读 · 0 评论 -
[bzoj4545] DQS的trie
题目大意有一个非严格的Trie,有三种操作:新加一个子树、求Trie上本质不同的字符串个数、询问一个字符串在trie上的出现次数。分析很容易想到用SAM来做。 在线用LCT维护即可。 然而这题允许离线,这里我用了个离线的做法。 首先把最终的trie构出来,建个SAM,然后每当新加入节点就把相应的信息加进去。 现在看看如何处理两个询问: 1. 询问本质不同的字符串个数。这个显然等于当前SAM原创 2017-07-13 19:45:35 · 540 阅读 · 0 评论