时间限制 : 1000 MS 空间限制 : 265536 KB
问题描述
在虐各种最长公共子串、子序列的题虐的不耐烦了之后,你决定反其道而行之。
一个串的“子串”指的是它的连续的一段,例如bcd是abcdef的子串,但bde不是。
一个串的“子序列”指的是它的可以不连续的一段,例如bde是abcdef的子串,但bdd不是。
下面,给两个小写字母串A,B,请你计算:
(1) A的一个最短的子串,它不是B的子串
(2) A的一个最短的子串,它不是B的子序列
(3) A的一个最短的子序列,它不是B的子串
(4) A的一个最短的子序列,它不是B的子序列
输入格式
有两行,每行一个小写字母组成的字符串,分别代表A和B。
输出格式
输出4行,每行一个整数,表示以上4个问题的答案的长度。如果没有符合要求的答案,输出-1.
样例输入
aabbcc
abcabc
样例输出
2
4
2
4
提示
对于100%的数据,A和B的长度都不超过2000
题解
一道大板题……
对 A,B A , B 两字符串建序列自动机和后缀自动机。根据序列自动机与后缀自动机的性质,从自动机的根出发到自动机上任意一点为原字符串的一个子序列(序列自动机)或子串(后缀自动机)。因此对题目中的四个问都只需在两串的对应机子上跑宽搜。若某状态,串 A