
ac自动机
Black__wing
acm菜鸡
展开
-
nefu1267挑战字符串
因为要求最大美丽值和的子串,不能相互重叠,那么我们记录每个子串的长度dep[i],在对母串进行字符串匹配时,进行状态转移,ans[i]=max(ans[i],ans[i-dep[i]]+val[i]),这样就能求得最大的答案了。#include <iostream>#include <stdio.h>#include <stdlib.h>#inc...转载 2019-01-04 19:06:34 · 216 阅读 · 0 评论 -
洛谷p2444 p4052 AC自动机
ac自动机fail指针,即为当失配后,跳转至与当前后缀相同的一个前缀上。因此如果一个点的fail指向的点是一个单词的终止,那么说明当前匹配到的这个位置,一定包括这个单词。因此建立fail指针时,我们可以更新ed的值,由此来判断,当到达这个点的时候是否会经过单词的结尾。P2444 在ac自动机上找一个无限循环的串,且这个串不可经过单词结尾,通过nxt数组进行dfs,维护两个数组,一个判断...原创 2019-07-31 14:17:25 · 217 阅读 · 0 评论 -
洛谷p3121 ac自动机
ac自动机匹配时,建立两个栈,其中一个栈存储答案,另一个栈存储失配指针。如果在某点找到我们要删除的单词(全部),那么我们要将匹配指针前移至此单词前面那个字母,即将我们的指针前移长度单位。#include <iostream>#include <stdio.h>#include <stdlib.h>#include <queue>#i...原创 2019-07-28 14:38:10 · 237 阅读 · 0 评论 -
洛谷p2322 ac自动机+最短路+dfs
ac自动机建立fail指针,求出每个点能覆盖的全部串种类,bfs求出最短母串长度(最短路),dfs求出路径输出。#include <iostream>#include <stdio.h>#include <stdlib.h>#include <queue>#include <cstring>#include <alg...原创 2019-07-28 20:17:38 · 182 阅读 · 0 评论