【题意】给两个小写字母串A,B,请你计算: (1) A的一个最短的子串,它不是B的子串 (2) A的一个最短的子串,它不是B的子序列 (3) A的一个最短的子序列,它不是B的子串 (4) A的一个最短的子序列,它不是B的子序列 不存在输出-1,1<=len(A),len(B)<=2000。 【算法】 ...
分类:
其他好文 时间:
2018-01-04 13:07:12
阅读次数:
201
Description 在虐各种最长公共子串、子序列的题虐的不耐烦了之后,你决定反其道而行之。 一个串的“子串”指的是它的连续的一段,例如bcd是abcdef的子串,但bde不是。 一个串的“子序列”指的是它的可以不连续的一段,例如bde是abcdef的子串,但bdd不是。 下面,给两个小写字母串A ...
分类:
其他好文 时间:
2016-12-14 21:13:42
阅读次数:
159
之前看过几次后缀自动机,然后因为人太蠢都没看懂。 最近重新填坑TAT。。。 BZOJ4032: [HEOI2015]最短不公共子串 建出后缀自动机和序列自动机,然后我们知道自动机上每一条路径都相当于一个子串(子序列),这样只要从根节点开始bfs一遍,找到A有而B没有的,那就是字典序最小的辣。 #in
分类:
其他好文 时间:
2016-02-05 01:41:51
阅读次数:
228
之前看过几次后缀自动机,然后因为人太蠢都没看懂。最近重新填坑TAT。。。BZOJ4032: [HEOI2015]最短不公共子串建出后缀自动机和序列自动机,然后我们知道自动机上每一条路径都相当于一个子串(子序列),这样只要从根节点开始bfs一遍,找到A有而B没有的,那就是字典序最小的辣。#includ...
分类:
其他好文 时间:
2016-01-19 09:05:03
阅读次数:
189
第一问:对B串建立SAM,暴力枚举A的每个子串,在SAM上走,若失配则可行。第二问:设g[i][j]表示B串的第i个字符之后最早出现的字符j的位置,暴力枚举A的每个子串,按照g贪心地走,若失配则可行。第三问:对B串建立SAM,设f[i][j]表示考虑了A的前i个字符,当前在SAM上的状态为j的最小长...
分类:
其他好文 时间:
2015-12-02 06:32:13
阅读次数:
209
题目大意:给定字符串A和B,求A最短的子串/子序列S满足S不是B的子串/子序列
这题真TM有毒*2
搞法类似这道题
然后子串是后缀自动机 子序列自然就是序列自动机了= =
每更新一个x节点时所有没有x的后继的节点都连向这个节点
每个节点的parent是这个字母上一次出现的位置
每个字母记录最后一次出现的位置 更新指针时沿着parent指针撸一遍就行了#include
#...
分类:
其他好文 时间:
2015-04-27 21:47:52
阅读次数:
172
题解:
T1:
我们按长度bfs所有的串,对于每个串记录A串中终点位置、B串中终点位置(B串中位置由B的后缀自动机中节点标号表示)、长度——(x,y,l)(x,y,l)。
然后 (x,y,l)(x,y,l) 可以 O(1)O(1) 转移到 (x+1,son[y,stringax+1?′a′],l+1)(x+1,son[y,stringa_{x+1}-'a'],l+1)
时间复杂度 O(...
分类:
其他好文 时间:
2015-04-27 18:27:23
阅读次数:
134