随笔分类 -  后缀自动机

摘要:HEOI2016 题解 Q:为什么要在sdoi前做去年的heoi题 A:我省选药丸 http://cogs.pro/cogs/problem/index.php?key=heoi2016 D1T1 树 树剖直接做 或者操作逆序,并查集维护自己和祖先中第一个打标记的点, 注意1号点本身有标记,mark 阅读全文
posted @ 2017-04-06 21:29 Candy? 阅读(501) 评论(0) 推荐(0) 编辑
摘要:"4698: Sdoi2008 Sandy的卡片" 题意:差分后就是多个串LCS SAM+map大法好 模板打错 智力 2 cpp include include include include include include using namespace std; typedef long lo 阅读全文
posted @ 2017-04-06 21:27 Candy? 阅读(357) 评论(0) 推荐(0) 编辑
摘要:复习字符串 KMP AC自动机 manacher SA SAM AC自动机 Fail树 祖先是后代节点对应字符串的后缀 给模式串建AC自动机,文本串中模式串出现次数:走到的每个节点fail祖先单词结尾个数;模式串在文本串中出现次数:文本串走的时候cnt++,子树cnt和。 队列中就是拓扑序 DP 考 阅读全文
posted @ 2017-04-05 23:05 Candy? 阅读(634) 评论(0) 推荐(0) 编辑
摘要:"4516: [Sdoi2016]生成魔咒" 题意:询问一个字符串每个前缀有多少不同的子串 做了一下SDOI2016R1D2,题好水啊~~随便AK~~ 强行开map上SAM 每个状态的贡献就是$Max(s) Min(s)+1$ 插入的时候维护一下就行了 cpp include include inc 阅读全文
posted @ 2017-03-31 18:18 Candy? 阅读(371) 评论(0) 推荐(0) 编辑
摘要:传送门 题意: 多次询问,给出一些后缀,求两两之间$LCP$之和 哈哈哈哈哈哈哈竟然$1A$了,刚才还在想如果写不好这道题下节数学就不上了,看来是上天让我上数学课啊 $Suffix\ Virtual\ Tree$ 没有多次询问就是那道差异了 多次询问总次数$O(n)$,建出后缀树每次建虚树就行了 然 阅读全文
posted @ 2017-03-10 09:52 Candy? 阅读(536) 评论(0) 推荐(0) 编辑
摘要:题意:给一个主串和多个询问串,求询问串的所有样子不同的周期同构出现次数和 没有周期同构很简单就是询问串出现次数,|Right| 有了周期同构,就是所有循环,把询问串复制一遍贴到后面啊!思想和POJ1509相似,不要局限于复制主串 然后走的时候维护nowLen 需要支持尾部插入字符(走转移边)和首部删 阅读全文
posted @ 2017-02-10 00:34 Candy? 阅读(488) 评论(0) 推荐(0) 编辑
摘要:Description 在这个问题中,给定一个字符串S,与一个整数K,定义S的子串T=S(i, j)是关于第K位的识别子串,满足以下两个条件: 1、i≤K≤j。 2、子串T只在S中出现过一次。 例如,S="banana",K=5,则关于第K位的识别子串有"nana","anan","anana"," 阅读全文
posted @ 2017-02-09 22:46 Candy? 阅读(845) 评论(2) 推荐(0) 编辑
摘要:JZPGYZ - Sevenk Love Oimaster Oimaster and sevenk love each other. But recently,sevenk heard that a girl named ChuYuXun was dating with oimaster.As a 阅读全文
posted @ 2017-02-09 17:41 Candy? 阅读(805) 评论(0) 推荐(0) 编辑
摘要:3926: [Zjoi2015]诸神眷顾的幻想乡 Description 幽香是全幻想乡里最受人欢迎的萌妹子,这天,是幽香的2600岁生日,无数幽香的粉丝到了幽香家门前的太阳花田上来为幽香庆祝生日。 粉丝们非常热情,自发组织表演了一系列节目给幽香看。幽香当然也非常高兴啦。 这时幽香发现了一件非常有趣 阅读全文
posted @ 2017-02-09 16:43 Candy? 阅读(454) 评论(0) 推荐(0) 编辑
摘要:2806: [Ctsc2012]Cheat 题意: 多个主串和多个询问串,每次询问将询问串分成多个连续子串,如果一个子串长度>=L且在主串中出现过就是熟悉的 如果熟悉的字符串长度>=询问串长的90%就是熟悉的文章;求成为熟悉的文章的最大的L 主串建广义SAM然后二分L判断可行性 使用DP判断L是否可 阅读全文
posted @ 2017-02-09 14:57 Candy? 阅读(641) 评论(1) 推荐(0) 编辑
摘要:3473: 字符串 Description 给定n个字符串,询问每个字符串有多少子串(不包括空串)是所有n个字符串中至少k个字符串的子串? 给定n个字符串,询问每个字符串有多少子串(不包括空串)是所有n个字符串中至少k个字符串的子串? Input 第一行两个整数n,k。 接下来n行每行一个字符串。 阅读全文
posted @ 2017-02-09 11:06 Candy? 阅读(2700) 评论(0) 推荐(0) 编辑
摘要:3238: [Ahoi2013]差异 Description Input 一行,一个字符串S 一行,一个字符串S Output 一行,一个整数,表示所求值 后缀数组看这里 http://www.cnblogs.com/candy99/p/6250732.html 反串建SAM然后Parent Tre 阅读全文
posted @ 2017-02-08 21:25 Candy? 阅读(409) 评论(0) 推荐(0) 编辑
摘要:4566: [Haoi2016]找相同字符 Description 给定两个字符串,求出在两个字符串中各取出一个子串使得这两个子串相同的方案数。两个方案不同当且仅当这两 个子串中有一个位置不同。 给定两个字符串,求出在两个字符串中各取出一个子串使得这两个子串相同的方案数。两个方案不同当且仅当这两 个 阅读全文
posted @ 2017-02-08 20:31 Candy? 阅读(1210) 评论(2) 推荐(0) 编辑
摘要:题意:不重叠最长重复子串 后缀数组做法:http://www.cnblogs.com/candy99/p/6227659.html 后缀自动机的话,首先|Right|>=2 然后min(t[u].val,最右r-最左r-1)>=4就可以了 注意判断条件不能写错哦 并且需要两者取min 阅读全文
posted @ 2017-02-08 18:42 Candy? 阅读(215) 评论(0) 推荐(0) 编辑
摘要:3998: [TJOI2015]弦论 Description 对于一个给定长度为N的字符串,求它的第K小子串是什么。 对于一个给定长度为N的字符串,求它的第K小子串是什么。 Input 第一行是一个仅由小写英文字母构成的字符串S 第二行为两个整数T和K,T为0则表示不同位置的相同子串算作一个。T=1 阅读全文
posted @ 2017-02-08 16:42 Candy? 阅读(353) 评论(0) 推荐(0) 编辑
摘要:题意:给一个长度不超过90000的串S,每次询问它的所有不同子串中,字典序第K小的,询问不超过500个。 第一道自己做的1A的SAM啦啦啦 很简单,建SAM后跑kth就行了 也需要按val基数排序倒着推出来d[s]状态s的后继子串个数 跑kth的时候判断d[v]>=k的时候就跑到v,并且k应该是-- 阅读全文
posted @ 2017-02-08 15:23 Candy? 阅读(343) 评论(0) 推荐(0) 编辑
摘要:2555: SubString Description 懒得写背景了,给你一个字符串init,要求你支持两个操作 (1):在当前字符串的后面插入一个字符串 (2):询问字符串s在当前字符串中出现了几次?(作为连续子串) 你必须在线支持这些操作。 懒得写背景了,给你一个字符串init,要求你支持两个操 阅读全文
posted @ 2017-02-08 11:50 Candy? 阅读(1111) 评论(0) 推荐(0) 编辑
摘要:Description 小敏和小燕是一对好朋友。 他们正在玩一种神奇的游戏,叫Minecraft。 他们现在要做一个由方块构成的长条工艺品。但是方块现在是乱的,而且由于机器的要求,他们只能做到把这个工艺品最左边的方块放到最右边。 他们想,在仅这一个操作下,最漂亮的工艺品能多漂亮。 两个工艺品美观的比 阅读全文
posted @ 2017-02-08 08:34 Candy? 阅读(354) 评论(0) 推荐(0) 编辑
摘要:题意: 给一个字符串S,令F(x)表示S的所有长度为x的子串中,出现次数的最大值。求F(1)..F(Length(S)) clj课件: 我们构造S的SAM,那么对于一个节点s,它的长度范围是 [Min(s),Max(s)],同时他的出现次数是|Right(s)|。那么我们用 |Right(s)|去更 阅读全文
posted @ 2017-02-08 00:05 Candy? 阅读(266) 评论(0) 推荐(0) 编辑
摘要:题意: 求多个串<=10的最长连续子串 一个串建SAM,然后其他串在上面走 每个状态记录所有串在这个状态的公共子串的最小值 一个串在上面走的时候记录与每个状态公共子串的最大值,注意出现次数向父亲传递,一个状态能到达说明了Suffix Link指向的状态可以取到最大子串,这一步对val后基数排序然后倒 阅读全文
posted @ 2017-02-07 21:49 Candy? 阅读(1100) 评论(0) 推荐(0) 编辑