
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 · 1662 阅读 · 0 评论 -
hdu 2222 Keywords Search(AC自动机)
AC自动机模板题。 next数组开成char蜜汁mle。。 hdu的tle和mle已经让我不敢相信了。 代码: #include #define totNode 500005 #define maxn 1000006 using namespace std; struct acho { struct st{ int next[26];原创 2017-06-06 21:35:42 · 305 阅读 · 0 评论 -
hdu 3065 病毒侵袭持续中(AC自动机)
AC自动机第三题了,交上去1A真的爽,(题目没说多组坑了一发不能算,哼!) 其它oj不知道,hdu貌似对内存的统计是按使用过的内存来的,而不是按你申请的内存,然后静态字典树的话,只要动态使用数组就不会(其实就是不要一开始就整个初始化了)mle了。 然后当next[now][i]==-1的时候,直接让其等于next[fail[now]][i]这个优化真的不要太好,不仅时间上优化了原创 2017-06-20 12:43:14 · 282 阅读 · 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 · 975 阅读 · 0 评论