后缀自动机/后缀数组
pbihao
这个作者很懒,什么都没留下…
展开
-
【BZOJ 4516】 [Sdoi2016]生成魔咒 后缀自动机
可以拿来练一下版 #include #include #include #include #define maxn 250020*2 #define LL long long using namespace std; int n,fail[maxn],len[maxn],tot,last,rt; LL ans; mapson[maxn]; void insert(int x){原创 2016-12-27 19:38:45 · 330 阅读 · 0 评论 -
【BZOJ 2780】[Spoj]8093 Sevenk Love Oimaster 广义后缀自动机
广义后缀自动机其实就是简单的把所有的串都插到了一起而已。。。。 每添加进一个新的字符其实影响到的字串也就是能新增加的字串就是fail链上的,每一次新加入一个字符向上更新影响就好了#include #include #include #define maxn 200021 using namespace std; int n,last=1,m,tot=1,rt=1,son[maxn][26],le原创 2017-03-21 21:54:43 · 274 阅读 · 0 评论 -
【BZOJ 3676】 [Apio2014]回文串 回文树
回文树裸题拿来练板 #include #include #include #define maxn 300021 #define LL long long using namespace std; int n,p,last,fail[maxn],ch[maxn][26],len[maxn],cnt[maxn]; int s[maxn],N; char ss[maxn]; int get(原创 2017-03-19 20:07:06 · 272 阅读 · 0 评论 -
【BZOJ 3230】相似子串 后缀数组
出题人在下面写题解系列 本质不同的字串个数=∑n-h[i]-sa[i] 然后一个一个套就好了 #include #include #include #define maxn 200021 #define LL long long using namespace std; struct SA{ int n,sa[maxn],rk[maxn],f[maxn*2][18],t1[maxn],t2原创 2017-03-19 16:45:04 · 337 阅读 · 0 评论 -
【BZOJ 1692】[Usaco2007 Dec]队列变换 后缀数组
自从学了后缀自动机以后就很久没写过后缀数组了,今天来练一下版,话说每隔80个字符换行是什么鬼wa了一发。 思路嘛,就是贪心,倒着把原串借一次,构造好后缀数组以后就每次比较哪个的字典序跟小 #include #include #include #define maxn 60020 using namespace std; int t1[maxn],t2[maxn],sa[maxn],c[maxn原创 2017-01-09 20:52:24 · 290 阅读 · 0 评论 -
【BZOJ 3926】[Zjoi2015]诸神眷顾的幻想乡 广义后缀自动机
注意题目描述:叶子节点 至于广义后缀自动机的话,额,在脑海里YY一下,其实我们的后缀自动机最终构造出来是一条链,然后旁边多了一些奇奇怪怪虚拟节点的对吧,那么我们每一条链其实可以代表不同的串,然后再把这些不同的串之间能够公用的部分合理公用(丧心病狂),得到一个类似于树形结构的东东,这个就是广义后缀自动机啦,唯一的区别就在于p和np的关系上,自己慢慢看吧。 #include #include原创 2016-12-28 16:04:51 · 262 阅读 · 0 评论 -
【BZOJ 4199】[Noi2015]品酒大会 后缀自动机构造后缀树+dp
题面:http://uoj.ac/problem/131(BZOJ肿么了qaq) 如果连后缀自动机为什么可以转成后缀树都不知道的,先去切3238差异:http://blog.csdn.net/pbihao/article/details/53905995 我们先构造出后缀自动机,然后转成后缀树,在后缀树上跑dp,只用维护一个最大最小,和size就好了#include #include #inc原创 2016-12-28 14:41:17 · 614 阅读 · 0 评论 -
【BZOJ 3238】[Ahoi2013]差异 后缀自动机构造后缀树
关于后缀自动机的学习网上有很多,所以我就只说说为什么后缀自动机可以转成后缀树。 个人觉得比较好的后缀自动机的博客:http://blog.sina.com.cn/s/blog_70811e1a01014dkz.html https://blog.csdn.net/litble/article/details/78997914 图片来源:http://blog.sina.com.cn/s/bl...原创 2016-12-28 10:19:32 · 844 阅读 · 0 评论 -
【BZOJ 3277】串 广义后缀自动机
判断一个串是否在至少k个字符串里面的方法后3473一样,每添加一个新的字符就沿fail链更新。 剩下的问题就只是剩下了,每增加一个新的字符,共多出现了多少个新的字符串,如果不要求重复,那么很显然就是len[u]-len[fail[u]],这里重复的字串也需要加入答案所以只用沿fail链dfs一下,sum[u]=fail链上所有的坏和就好了 #include #include #include原创 2017-03-22 20:54:13 · 391 阅读 · 0 评论