随笔分类 - 后缀自动机
就是各种并不对劲的后缀自动机
摘要:题目大意 有一个串$s$,一开始只知道它的一个前缀。有$q$($q\leq 10^4$)个操作,操作有两种:1.给一个字符串,表示$s$($s$总长$\leq 6\times 10^5$)当前未知部分的前缀;2.给一个字符串,问$s$的已知部分中有几个子串和该串相同,询问串总长$\leq 3\tim
阅读全文
摘要:题目大意 给出一个字符串$S$,长度为$n$($n\leq 10^5$),$S[l:r]$表示$S_l,S_{l+1}...,S_r$这个子串。有$m$($m\leq 3\times 10^5$)次询问,每次询问给出$l,r$,问有多少对$(i,j)$($1\leq irl$时,第一刀切在$[r_i
阅读全文
摘要:题目大意 $n$个点的树,每条边上有一个小写字母。 操作:给定2个点$u$,$v$($u$可能等于$v$)和一个非空字符串$s$,问从$u$到$v$的简单路径上的所有边按照到$u$的距离从小到大的顺序排列后,边上的字符依次拼接形成的字符串中给定的串$s$出现了多少次。 $n,m\leq 10^5,\
阅读全文
摘要:题目大意 给出字符串$S(|S|\leq2\times10^5)$, $na(na\leq2\times 10^5)$个区间$[l_i,r_i]$表示$S_{l_i},S_{l_i+1},...,S_{r_i}$组成的这个$S$的子串是第$i$个A类串 $nb(nb\leq2\times 10^5)
阅读全文
摘要:题目大意 “优秀的拆分”指将一个字符串拆分成AABB的形式 十次询问,每次给出一个字符串S($|S|\leq3 10^4$),求它的所有子串的优秀的拆分的方案数之和 题解 此题过于优秀,题解先坑着 代码 include include include include include include
阅读全文
摘要:题目大意 对于一个给定的长度为n($n\leq5 10^5$)的字符串, 分别求出不同位置的相同子串算作一个、不同位置的相同子串算作多个时,它的第k($k\leq10^9$)小子串是什么 题解 建这个字符串的后缀自动机 先dp求出后缀自动机上每一个点能走到多少个字符串 然后从根节点出发,每次走连向d
阅读全文
摘要:exploit 题目大意 有一棵$n$($n\leq152501$)个点的树,时间从$0$开始,每过一秒,每个点$i$的点权就会增加$v_i$,每个点$i$有点权上限$L_i$,也就是说,没有询问时第$T$秒初点$i$的点权是$min(v_i T,L_i)$ 这棵树有边权,且边权为正 有$q$($q
阅读全文
摘要:陈年老坑 题意大概是有n个字符串,要求出每一个字符串的所有子串(不包括空串)在所有字符串(包括自身)中出现次数不少于k的有多少个。n,k,字符串总长<=100000。 如果只有一个串的话,非常好办,直接把它建成后缀自动机就行了。 那么不止一个串该怎么办呢?想必是也可以用后缀自动机解决的。这时就要建出
阅读全文
摘要:题目传送门:-> 看到题目的第一反应当然是暴力:对于串s建后缀自动机,每次询问中,求w对应的子串在s的SAM中的right集合。O(qmk)听上去显然过不了。 数据范围有个∑w<=1e5,也就是说,q*k<=1e5,当q更小或k更小时可以用不同的方法。 k更小时,会发现每个w的子串数可能会很小,子串
阅读全文
摘要:传送门-> 又称普及大会。 这题没什么好说的……后缀自动机裸题……并不对劲的人太菜了,之前照着标程逐行比对才过了这道题,前几天刚刚把这题一遍写对…… 这题的输出和某两点相同后缀的长度有关,那么把串反过来就和相同前缀的长度有关。建出后缀自动机后,发现点u代表了right[u]个dis[fa[u]+1]
阅读全文
摘要:题意是求一个字符串每个长度的子串出现次数最多的那个出现了多少次,也就是求每个到根的最长路的right集合最大值 。 先建后缀自动机,然后将每个前缀所在的集合的初值设为1,因为所有前缀的right集合肯定不相同,而且它们包含了所有位置。 接下来按到根的最长距离从大到小排序,将right集合累加到par
阅读全文
摘要:题意是求多个串的lcs。 这也是道后缀自动机的模板题。对于任意一个字符串建后缀自动机,用其他串查询就行。对于后缀自动机的每个状态要额外记匹配到当前状态的最大长度。 和spoj1811的区别在于这道题不方便后缀数组做。当然,如果不嫌很多个串用奇怪的字符连起来麻烦、判断时常数极大的话,也可以试试。 字符
阅读全文
摘要:题意是求两个字符串的lcs,两个串都只包含小写字母。 本题既可以用后缀自动机,又可以用后缀数组。 对于后缀自动机,就是一道模板题,直接对于一个字符串建后缀自动机再用另一个串查询就行。 对于后缀数组,其实也是一道模板题,但不是后缀数组的模板,而是用后缀数组求同一字符串的两个后缀的最长公共前缀的模板。
阅读全文
摘要:后缀自动机是个好东西,代码短还很快。 这是因为根到一个节点的不同路径表示所有有某种相同性质的不同字符串。 假设对于字符串S建后缀自动机,以下名词的意思是: right(S的子串s):s在S中出现的位置的右端点的集合; 状态:有同样right集合的子串,某状态的right集合是指该状态的所有字符串的r
阅读全文
浙公网安备 33010602011771号