欢迎光临 ~|

Laijinyi

园龄:1年7个月粉丝:2关注:2

H7.1.4.1. 最短不公共子串

Statement

给两个串 A,B,其中 |A|,|B|2000,计算:

  • A 的最短子串,他不是 B 的子串
  • A 的最短子串,他不是 B 的子序列
  • A 的最短子序列,他不是 B 的子串
  • A 的最短子序列,他不是 B 的子序列

Solution

子序列自动机:δ(u,c)=min{i|i>usi=c},可 O(n|Σ|) 求出

那么这四问都可以转化成:有两个 DAG 记为 A,B,起始点都为 0,求最短的路径使 A 能完整走完,而 B 不能。

f(i,j)A 上从 i 出发,B 上从 j 出发的最短路径长度,有

f(i,j)=mincΣ{f(δA(i,c),f(δB(j,c)))+1}

边界:对于 i,j,若存在 c,存在转移 δA(i,c) 且不存在转移 δB(j,c),则 f(i,j)=0.

答案:f(0,0)

时间:O(n2|Σ|)

本文作者:laijinyi

本文链接:https://www.cnblogs.com/laijinyi/p/18425918

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   Laijinyi  阅读(4)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起