
AC自动机
johsnows
正在静下心来学算法的acmer
展开
-
USACO 2015 February Censoring (Gold)&&BZOJ3940 && 阿里2021秋招笔试T2自动删除机
BZOJ倒了,USACO上还可以补题,链接是:http://www.usaco.org/index.php?page=viewproblem2&cpid=533题意不赘诉了。思路:建ac自动机,用一个栈维护删除后得字符串(ans[top]),一个数组记录每个字符匹配到的树(自动机)上的点d[top],当在树上匹配到一个完整子串节点,就弹栈,删除对应长度得字符串,然后当前匹配节点也返回到对应字符的点上,注意d数组的下标也是top。好久没写自动机了,有一个注意点是 自动机root节点原创 2020-08-09 18:11:14 · 1654 阅读 · 0 评论 -
hdu 2222 Keywords Search(AC自动机)
AC自动机模板题。next数组开成char蜜汁mle。。hdu的tle和mle已经让我不敢相信了。代码:#include #define totNode 500005#define maxn 1000006using namespace std;struct acho{ struct st{ int next[26];原创 2017-06-06 21:35:42 · 294 阅读 · 0 评论 -
hdu 3065 病毒侵袭持续中(AC自动机)
AC自动机第三题了,交上去1A真的爽,(题目没说多组坑了一发不能算,哼!)其它oj不知道,hdu貌似对内存的统计是按使用过的内存来的,而不是按你申请的内存,然后静态字典树的话,只要动态使用数组就不会(其实就是不要一开始就整个初始化了)mle了。然后当next[now][i]==-1的时候,直接让其等于next[fail[now]][i]这个优化真的不要太好,不仅时间上优化了原创 2017-06-20 12:43:14 · 275 阅读 · 0 评论 -
hdu 6096 String(AC自动机)
转换还是比较巧妙的。因为要求前缀后缀都包含的个数,所以可以把字符串a转换成a#a这样一个字符串,比如abca就转换成abca#abca然后对于一组前缀a后缀b转换成b#a,比如ab ca,就是ca#ab,然后对前缀后缀的串建立AC自动机,让主串去匹配,如上述例子,ca#ab满足为abca#abca的一个子串,也就是abca满足这个前缀后缀,所以问题,就转换成了典型的ac自动机匹配问题。原创 2017-08-12 00:07:17 · 956 阅读 · 0 评论