————SAM
BAJim_H
比孤独更可悲的事情,就是根本不知道自己很孤独,或者分明很孤独,却把自己都骗得相信自己不孤独。
展开
-
[JZOJ4039][BZOJ3926]【ZJOI2015】诸神眷顾的幻想乡
Description Solution发现叶子节点只有20个那么暴力从每个叶子开始跑,建出一个大Trie把这个Trie用BFS再建成广义SAM即可Code#include <cstdio>#include <iostream>#include <cstdlib>#include <cstring>#include <algorithm>#include <cmath>#define原创 2017-12-09 20:30:56 · 295 阅读 · 0 评论 -
后缀自动机(SAM)模板
Code单串SAMvoid make(){ int last=1; fo(i,1,n) { int p=last,c=ch[i]-'A'; mx[last=++tot]=i; while(p&&!t[p][c]) t[p][c]=ls,p=fail[p]; if(p) ...原创 2017-12-07 17:09:11 · 447 阅读 · 0 评论 -
后缀自动机(SAM)学习小记
Text自动机的概念此处不解释。。引入我们需要一种数据结构能够识别一个字符串S的所有后缀一种方法是直接建一棵Trie树,把每个后缀扔到里面去这样的时空复杂度都是O(N^2)的,不能满足我们的要求SAM应运而生观察建好的Trie树,我们发现有很多的状态是冗余的,利用率低下核心思想SAM的思想就是将同一类的状态缩到一个点上 这样原来的Trie就变成了一个D...原创 2017-12-07 17:32:56 · 461 阅读 · 0 评论 -
[JZOJ4370] hypocritical
Description Solution几乎没有什么思维难度先将原树建成一个Trie,此时Trie上的节点已经合并了一些终点了,合并的时候DP背包一下然后再BFS把Trie建成SAM,那么就变成了在Fail树上DP,子树选取,直接背包即可代码略为猥琐Code#include <cstdio>#include <iostream>#include <algorithm>#include <cm原创 2017-12-30 10:48:13 · 278 阅读 · 0 评论 -
[JZOJ6028]【GDOI2019模拟2019.2.23】字符串【SAM】【LCT】【线段树】
DescriptionSolution不妨先考虑subtask 2即给出一个字符串S,动态询问[l,r]内本质不同的子串数。有一个非常套路的做法(来自laofu的2018集训队论文):考虑离线。先将这个字符串S的SAM建出来对于SAM上的一个节点,贡献就是它在[l…r]出现的最后一次被l所截的长度。我们将所有询问按右端点排序,从左到右扫r。那么每次相当于在parent树上将一个...原创 2019-02-25 07:41:51 · 392 阅读 · 0 评论 -
[JZOJ6241]【NOI2019模拟2019.6.29】字符串【数据结构】【字符串】
Description给出一个长为n的字符串SSS和一个长为n的序列aaa定义一个函数f(l,r)f(l,r)f(l,r)表示子串S[l..r]S[l..r]S[l..r]的任意两个后缀的最长公共前缀的最大值。现在有q组询问,每组询问给出L,R,xL,R,xL,R,x你需要找到一个子串S[l,r]S[l,r]S[l,r]满足[l,r]⊂[L,R][l,r]\subset[L,R][l,r]...原创 2019-06-30 22:29:59 · 245 阅读 · 0 评论