后缀自动机
文章平均质量分 69
空灰冰魂
=NULL
展开
-
【POJ3415】Common Substrings 后缀自动机
题意:给两个串,问有多少长度大于等于K的公共子串(位置不同也算一对)题解:后缀自动机DP对第一个串建立后缀自动机,然后做一些预处理,然后拿第二个串在后缀自动机上跑,到每个节点加一次贡献。但是这样需要每个点往parent树上跑一遍,会TLE,所以可以加个lazy。然后代码中有两次运用到拓扑序来从子向父推DP值。呃,说得乱糟糟的。Orz No_stop不原创 2015-01-14 15:00:18 · 2368 阅读 · 0 评论 -
【BZOJ3998】【TJOI2015】弦论 后缀自动机
题解:首先我们可以建一个后缀自动机。 然后每条路径走到每个点都是一个串,它们是有字典序的。 我们只需要统计出往每个点走之后都有多少串就好了。 fi=(∑fson)+numif_i = (\sum {f_{son}})+num_i 对于不计重复的情况下,numi=1num_i=1 对于计算重复的情况下,每个节点都有多种走到最后的方式,numinum_i 就是看有这个种数。 比如 ab原创 2015-04-29 17:37:55 · 2743 阅读 · 0 评论 -
【BZOJ3926】【Zjoi2015】诸神眷顾的幻想乡 广义后缀自动机
链接:#include <stdio.h>int main(){ puts("转载请注明出处[vmurder]谢谢"); puts("网址:blog.csdn.net/vmurder/article/details/44891009");}题意、题解、数据、出题人标程http://wjmzbmr.com/archives/zjoi-2015-day-1%e9%a2%98%e8%原创 2015-04-05 20:51:43 · 2361 阅读 · 0 评论 -
【BZOJ2780】【Spoj8093】 Sevenk Love Oimaster 后缀自动机
题意:n,mn个串m个串样例里面倒数第二行的you应该扔到下一行。问m个串每个在前n个串中的几个出现过。题解:首先这道题跟【BZOJ2754】【SCOI2012】喵星球上的点名是一样的,只不过更卡时一点,或者说喵的数据太弱。这道题虽然是后缀自动机,但是大体思路和【BZOJ2434】【NOI2011】阿狸的打字机 AC自动机原创 2015-01-22 10:22:22 · 2788 阅读 · 0 评论 -
【BZOJ2555】SubString 后缀自动机 暴力
题解:正解是LCT+SAM。但是出题人太神以至于不屑于卡你,所以只写个SAM然后暴力维护就好了。这样虽然很不科学,但是可以比正解快三倍。我是太困了吧,写挂了调了好久(发呆了好久然后秒调过,或者说半眯着眼睛睡了一会)代码:#include #include #include #include #define N 1601000#define T 26#原创 2015-01-20 11:08:11 · 2941 阅读 · 0 评论 -
【BZOJ3879】SvT 后缀树+虚树
SVT什么意思?suffix virtual tree。没有错!后缀虚树好了,下面发一段以前的文字。话说其实后缀数组分治能写,当时想shei了。Vn:啊,水题。一看到“后缀”和这数据范围,肯定后缀数组、后缀自动机、后缀树走起!然后我们可以轻松构造出来一个后缀树,然后每次询问树形DP随便乱搞就能过了。但是这个时候显然会TLE,所以我们可以尝试利用【原创 2015-01-17 16:52:01 · 2823 阅读 · 7 评论 -
后缀自动机,SAM,suffix automaton 模板
后缀自动机(SAM、suffix automaton)模板。原创 2014-12-11 17:35:44 · 2966 阅读 · 0 评论 -
【POJ2774】Long Long Message 后缀自动机
……另一道题用到,想看看部分代码对不对。于是又拿SAM交了一遍此题。仅贴代码、原创 2014-12-24 16:26:34 · 1188 阅读 · 0 评论 -
【BZOJ3238】【Ahoi2013】差异 后缀自动机
首先 秦神QY Orz 题解:这道题后缀数组过于鬼畜(wo’tai’ruo’bu’gan’xie)所以写了简单好写易于理解不用分治不用RMQ的SAM大叔。题解:首先其实我们需要一个后缀树,然后两个后缀的lcp就是它们lca的len。后缀树可以通过反序后缀自动机得到,这个很水。然后len的性质就是后缀自动机的那个len(我写的‘deep’)。后缀树上DP就水了原创 2015-01-14 23:35:46 · 2213 阅读 · 0 评论 -
【BZOJ4032】【HEOI2015】最短不公共子串 后缀自动机
题解:T1:我们按长度bfs所有的串,对于每个串记录A串中终点位置、B串中终点位置(B串中位置由B的后缀自动机中节点标号表示)、长度——(x,y,l)(x,y,l)。 然后 (x,y,l)(x,y,l) 可以 O(1)O(1) 转移到 (x+1,son[y,stringax+1−′a′],l+1)(x+1,son[y,stringa_{x+1}-'a'],l+1) 时间复杂度 O(原创 2015-04-27 17:40:48 · 2986 阅读 · 0 评论