根据题目要求,我们需要构造一个最短的母串 'S'。具体的做法是首先将所有的子串加入到一个 Trie 树中,并在每个子串的末尾打上一个标记,表示这个节点被哪些结点经过。然后我们运用 AC 自动机的算法来构建 fail 指针(fail 树)。对于一个结点 'x',它需要从它 fail 树上的父节点那里转移标记,这样就可以找出到达某个结点时所出现的新字符串。接下来我们使用 BFS 算法来寻找最短的母串。

我们用 vis[u][state] 表示是否在匹配状态为 state 时经过结点 u。当我们找到一个结点满足它的状态等于最终状态时,输出它走过的路径长度,即为答案。

最短母串构造算法:Trie 树、AC 自动机和 BFS

原文地址: https://www.cveoy.top/t/topic/qupP 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录