摘要:
题意:求目标串中每个模式串出现几次目标串长度<=2000000 模式串<=1000个 模式串长度<=50题解:这不就是AC自动机的模板题吗!求fail树中模式串的子树中有几个是目标串的节点就完了- -但是 这样做不是太没意思了 (← ←...)昨天晚上听说后缀数组好像可以完美替代AC自动机(事实上是不行的)于是就拿出了这道题 思考如何用后缀数组解决其实一想还是挺简单的先把这些串接起来 求个sa和hi记第i个模式串的的位置是sp[i]显然包含模式串i的后缀在sa中肯定跟sp[i]相邻我们只要往两个方向枚举求几个是目标串的即可Q1:这时时间复杂度为O(模式串个数*串总长度)=O( 阅读全文
posted @ 2013-12-05 17:12
g_word
阅读(198)
评论(0)
推荐(0)
摘要:
题意:给定一个字符串 求重复次数最多的连续重复子串 并输出字典序最小方案题解:枚举子串长度L 显然如果重复次数>1 那么答案串肯定包含s[1],s[1+L],s[1+L*2],...中的两个枚举被答案包含位置 1+L*i将1+L*i和1+L*(i+1) 向前、向后匹配 记匹配距离和为k 则重复次数为k/L这样我们就能知道最多重复次数ans是多少但是这题还要求字典序最小方案求方案需要再进行一次枚举 方法同上当重复次数和答案相等时 更新方案但是我们知道 包含1+L*i重复次数为k/L 的方案可能有L种 这样总时间就可能达到O(n^2)因为这L种方案的下标是连续的 并且他们的长度相等我们可以用 阅读全文
posted @ 2013-12-05 10:48
g_word
阅读(168)
评论(0)
推荐(0)

浙公网安备 33010602011771号