![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
SAM
Hany01
这个作者很懒,什么都没留下…
展开
-
SPOJ NSUBSTR(SAM)
Description给定一个串,求长度为iii的串中出现次数最多的串的出现次数。Solution乍一看这题,咦?woc,这不是SA傻逼题么?? 然后发现本题时限只有100ms,SPOJ下面的评论都说O(nlog2n)O(nlog2n)O(nlog_2n)过不了。。于是建出SAM,用len更新答案即可。Source/************************...原创 2018-03-31 11:05:53 · 216 阅读 · 0 评论 -
【BZOJ5137】【Usaco2017 Dec】Standing Out from the Herd(广义SAM)
Description定义一个字符串的「独特值」为只属于该字符串的本质不同的非空子串的个数。如 “amy” 与 “tommy” 两个串, 只属于 “amy” 的本质不同的子串为 “a” “am” “amy” 共 3 个。只属于 “tommy” 的本质不同的子串为 “t” “to” ” tom” “tomm” “tommy” “o” “om” “omm” “ommy” “mm” “mmy” ...原创 2018-07-02 20:59:53 · 292 阅读 · 0 评论 -
【BZOJ2555】SubString(SAM,LCT)
Description给你一个字符串init,要求你支持两个操作 (1):在当前字符串的后面插入一个字符串 (2):询问字符串s在当前字符串中出现了几次?(作为连续子串) 你必须在线支持这些操作。Solution用SAM维护出现次数,由于要兹磁动态加字符串,用LCT维护子树内的size和即可。Code/*************************...原创 2018-06-26 20:24:06 · 453 阅读 · 0 评论 -
【BZOJ1396】【BZOJ2865】识别子串(SAM,线段树)
DescriptionSolution识别子串显然就是后缀自动机上右端点集合大小为1的点而且右端点的位置等于maxlen。 我们对于每一个sz[u]=1的点,有两个更新的方向: 1. 1~len[u]-len[fa[u]] 更新成 len[u] - i + 1 2. len[u]-len[fa[u]]~len[u] 更新成 len[fa[u]] + 1 第二种直接用一棵...原创 2018-06-09 22:12:37 · 459 阅读 · 0 评论 -
【BZOJ4698】【SDOI2008】Sandy的卡片(SAM)
Descriptionclick meSolution这道题和SPOJ LCS2差不多。OTZ 写的时候有个错误WA了好久:min[u]一定要赋成len[u]!!!不然用儿子更新父亲的时候会超过len[u]。Code/************************************************ * Au: Hany01 * Prob: ...原创 2018-05-29 14:45:36 · 324 阅读 · 0 评论 -
【BZOJ4566】【LOJ2064】【HAOI2016】找相同字符(SAM)
Description给定两个字符串,求出在两个字符串中各取出一个子串使得这两个子串相同的方案数。两个方案不同当且仅当这两个子串中有一个位置不同。Solution考虑建出一个串的SAM,让另一个串在上面跑。 记贡献的时候,当前节点的贡献为(len−longest[fa[u]])×sz[u](len−longest[fa[u]])×sz[u](len-longest[fa[u]...原创 2018-05-25 21:00:51 · 230 阅读 · 0 评论 -
【BZOJ2806】【CTSC2012】熟悉的文章 Cheat (后缀自动机,二分,单调队列DP)
Descriptionclick meSolution一道不那么裸的SAM显然先要二分L,接下来的问题是怎么判断是否可行。 先用sam求出从每个位置最多可以匹配多长。考虑一个DP,dp[i]表示到第i个位置最多可以匹配多少位置,转移非常显然,用单调队列优化就行了。Code/****************************************...原创 2018-05-07 21:25:41 · 190 阅读 · 0 评论 -
【CF666E】Forensic Examination(广义后缀自动机,线段树合并)
Description给定一个串sss和若干个串titit_i,给定很多个询问l,r,pl,prl,r,pl,prl,r,pl,pr,表示询问spl,prspl,prs_{pl,pr}在tltlt_l到trtrt_r中的哪个串中出现次数最多,输出串的编号和次数。(如果有次数相同的输出编号小的)Solution对于t1…nt1…nt_{1\dots n}建出广义SAM。 把询问...原创 2018-05-13 18:34:39 · 587 阅读 · 0 评论 -
【BZOJ3277】串(广义后缀自动机)
Description给定你n个字符串,询问每个字符串有多少子串(不包括空串)是所有n个字符串中至少k个字符串的子串(包括本身)。Solution第200篇博客祭~建出广义后缀自动机,求出每个节点是多少个串的子串,记作size[u]。 对于每一个串,枚举右端点,找到满足size[u]>k的点,len[u]即为其贡献。时间复杂度依然很迷。。。Code...原创 2018-05-06 16:43:31 · 241 阅读 · 0 评论 -
【BZOJ2780】【SPOJ】Sevenk Love Oimaster(广义后缀自动机)
Description有n个大串和m个询问,每次给出一个字符串s询问在多少个大串中出现过。Solution广义后缀自动机入门题。其实就是在插入一个串后将last设为root即可。 然后统计每个节点所代表的串是多少个输入串的子串。 对于每次询问,直接在SAM上走一遍就行了。至于时间复杂度,感觉真的很迷啊。。Code/******************...原创 2018-05-06 08:18:48 · 309 阅读 · 0 评论 -
【HDU4622】Reincarnation(SAM)
Description给定一个长度为nnn的串SSS(n≤2000n≤2000n\le 2000),给出mmm次询问,每次询问串S(l,r)S(l,r)S(l,r)有多少个不同的子串。SolutionSAM水题。发现串比较短,直接枚举开头位置依次插入SAM,预处理出ansi,jansi,jans_{i,j}表示S(i,j)S(i,j)S(i,j)的答案即可。Code...原创 2018-05-12 09:34:51 · 182 阅读 · 0 评论 -
【SPOJ】LCS2(SAM)
Description求多个串的LCSSolution建出一个串的SAM,然后将剩下的每一个串在上面跑一遍,每个节点取对于每个串匹配出来的最小值,答案就是所有节点的最大值。 记得要用子节点更新父节点Code/************************************************ * Au: Hany01 * Date: May 4...原创 2018-05-04 12:01:38 · 330 阅读 · 0 评论 -
【BZOJ3998】【TJOI2015】弦论(SAM)
Description对于一个给定长度为N的字符串,分别考虑是否计算重复的子串,求它的第K小子串是什么。Solution滚回去搞文化这么久了,现在写代码都没有手感,连个SAM都调了好久,康复训练ing。。。对于计算重复子串的询问,我们可以直接累加size即可。 如果不计算重复的,我们直接将size赋成111即可。然后直接DFS跑一遍就行了。Code/*...原创 2018-05-03 21:44:40 · 163 阅读 · 0 评论 -
【BZOJ3926】【ZJOI2015】诸神眷顾的幻想乡(广义后缀自动机)
Description幽香是全幻想乡里最受人欢迎的萌妹子,这天,是幽香的2600岁生日,无数幽香的粉丝到了幽香家门前的太阳花田上来为幽香庆祝生日。 粉丝们非常热情,自发组织表演了一系列节目给幽香看。幽香当然也非常高兴啦。 这时幽香发现了一件非常有趣的事情,太阳花田有n块空地。在过去,幽香为了方便,在这n块空地之间修建了n-1条边将它们连通起来。也就是说,这n块空地形成了一个树的结构。 ...原创 2018-05-08 21:09:58 · 174 阅读 · 0 评论 -
【BZOJ2882】工艺(SAM)
Description小敏和小燕是一对好朋友。 他们正在玩一种神奇的游戏,叫Minecraft。 他们现在要做一个由方块构成的长条工艺品。但是方块现在是乱的,而且由于机器的要求,他们只能做到把这个工艺品最左边的方块放到最右边。 他们想,在仅这一个操作下,最漂亮的工艺品能多漂亮。 两个工艺品美观的比较方法是,从头开始比较,如果第i个位置上方块不一样那么谁的瑕疵度小,那么谁就更漂亮,如果一...原创 2018-04-05 20:06:49 · 273 阅读 · 0 评论 -
【BZOJ4516】【SDOI2016】生成魔咒(SAM)
Description魔咒串由许多魔咒字符组成,魔咒字符可以用数字表示。例如可以将魔咒字符 1、2 拼凑起来形成一个魔咒串 [1,2]。 一个魔咒串 S 的非空字串被称为魔咒串 S 的生成魔咒。 例如 S=[1,2,1] 时,它的生成魔咒有 [1]、[2]、[1,2]、[2,1]、[1,2,1] 五种。S=[1,1,1] 时,它的生成魔咒有 [1]、[1,1]、[1,1,1] 三种。最初 ...原创 2018-04-01 20:30:20 · 227 阅读 · 0 评论 -
SPOJ LCS (SAM)
Description求两个串的lcsSolution建出一个串的SAM,然后另一个串在上面匹配即可。Source/************************************************ * Au: Hany01 * Date: Apr 1st, 2018 * Prob: SPOJ LCS * Email: hany01@foxmail...原创 2018-04-01 19:42:18 · 209 阅读 · 0 评论 -
【Luogu3804】SAM模板题
Description给定一个只包含小写字母的字符串SSS , 请你求出 SSS 的所有出现次数不为 111 的子串的出现次数乘上该子串长度的最大值。SolutionSAM模板题。 建出SAM后按拓扑序依次更新sizesizesize,maxisizei×lenimaxisizei×leni\displaystyle\max_i size_i\times len_i即是答案。...原创 2018-03-31 23:09:13 · 246 阅读 · 0 评论 -
【LOJ6041】【雅礼集训 2017 Day7】事情的相似度(LCT,SAM,线段树,离线)
Description人的一生不仅要靠自我奋斗,还要考虑到历史的行程。历史的行程可以抽象成一个 01 串,作为一个年纪比较大的人,你希望从历史的行程中获得一些姿势。你发现在历史的不同时刻,不断的有相同的事情发生。比如,有两个人同时在世纪之交 11 年的时候上台,同样喜欢与洋人谈笑风生,同样提出了以「三」字开头的理论。你发现,一件事情可以看成是这个 01 串的一个前缀,这个前缀最右边...原创 2018-06-27 20:32:46 · 591 阅读 · 0 评论