随笔分类 -  后缀自动机

摘要:建出 SAM。 对于每个子串,处理出这个子串最长合法的后缀。 阅读全文
posted @ 2018-09-04 21:00 泪寒之雪 阅读(293) 评论(0) 推荐(0)
摘要:#include #define N 2000011 #define LL long long #define Mid (l+r>>1) #define Max(a,b) (a>b?a:b) #define Min(a,b) (a g[N],v; int fa[N],ch[N][26],mx[N],mi[N],rt[N],dep[N],vis[N]; void add(){ for (i... 阅读全文
posted @ 2018-08-16 20:10 泪寒之雪 阅读(459) 评论(0) 推荐(0)
摘要:SOL: 我们可以考虑SAM来跑这玩意。 我们发现 q*k=C是一个常数。 那么我们可以分段处理:当k小于一个值的时候,我们可以在sam上暴力求出当前串的每一个子串的出现次数。 复杂度O(kC+simga q) 当k很大时,我们在SAM的fail树上倍增,我们暴力记下每一个前缀,对于每个前缀通过fa 阅读全文
posted @ 2018-04-12 21:26 泪寒之雪 阅读(426) 评论(0) 推荐(0)
摘要:我们建SAM,在SAM上跑DP:(SAM不会点这里) 我们发现柿子的前半部分很好统计,那么我们只要搞后半部分。 我们反向建SAM,fa上的LCA就是其反串的前缀的后缀(原串的后缀的前缀)。 阅读全文
posted @ 2018-01-21 20:11 泪寒之雪 阅读(164) 评论(0) 推荐(0)
摘要:我们建SAM,在SAM上跑DP:(SAM不会点这里) 当T=1时,cnt.fa+=cnt;(因为这时我们一个点代表了很多的子串。) 当T=0时,cnt=1 然后DFS出解。 阅读全文
posted @ 2018-01-21 20:07 泪寒之雪 阅读(232) 评论(0) 推荐(0)
摘要:题目点这里 我们发现这道题可以用后缀自动机做(不会的点这里) 我们发现后缀自动机每条路径代表一条子串,那么我们就DP: 写法一 我们可以把DP方程化简一下,得到写法二 阅读全文
posted @ 2018-01-12 21:17 泪寒之雪 阅读(169) 评论(0) 推荐(0)
摘要:后缀自动机(不会点这里) 加入节点的时候记录一下这个点是不是代表后缀。建完以后重建一下后缀树在上面dfs就可以了= =(注意重建的时候是字典序排序,不是拓扑序 由于空间的关系,用map 阅读全文
posted @ 2018-01-12 17:39 泪寒之雪 阅读(452) 评论(0) 推荐(0)
摘要:后缀自动机,是一种线性的字符串处理工具: 引用一下陈立杰的PPT 有限状态自动机的功能是识别字符串,令一个自动机A,若它能识别字符串S,就记为A(S)=True,否则A(S)=False。 自动机由五个部分组成,alpha:字符集,state:状态集合,init:初始状态,end:结束状态集合,tr 阅读全文
posted @ 2018-01-12 15:45 泪寒之雪 阅读(2643) 评论(1) 推荐(0)
摘要:SOL:以第一个串为模板建立后缀自动机,把后面几个串在SAM上跑一下。求max即可。 不会后缀自动机的同学点这里 阅读全文
posted @ 2018-01-12 14:07 泪寒之雪 阅读(289) 评论(0) 推荐(0)
摘要:题目描述 幽香是全幻想乡里最受人欢迎的萌妹子,这天,是幽香的2600岁生日,无数幽香的粉丝到了幽香家门前的太阳花田上来为幽香庆祝生日。 粉丝们非常热情,自发组织表演了一系列节目给幽香看。幽香当然也非常高兴啦。 这时幽香发现了一件非常有趣的事情,太阳花田有n块空地。在过去,幽香为了方便,在这n块空地之 阅读全文
posted @ 2017-12-17 14:01 泪寒之雪 阅读(344) 评论(0) 推荐(0)