字符串-SAM
文章平均质量分 69
Dream_Lolita
退役OIer,转战ACM
展开
-
【SAM】gym103409J (2021CCPC桂林J)
【题意】给定一个字符串sss,QQQ次询问sss本质不同的子串中排名第kkk的是哪个(输出对应最先出现的区间)。其中排名的定义是长度小的先,长度相同字典序小的先。∣s∣,Q≤106|s|,Q\leq 10^6∣s∣,Q≤106【思路】首先这个东西有个字典序的限制,众所周知,我们建出原串的后缀树(即反串SAM的parent树),然后按照边第一个字符从小到大的顺序DFS来遍历整颗树就可以按字典序遍历完所有的子串(当然是边压缩以后的)。那这个边的第一个字符是什么呢?事实上就是子节点能代表的最长的子串的原创 2021-11-17 17:00:58 · 713 阅读 · 0 评论 -
【SA/SAM】CF873F Forbidden Indices
【题目】CF给定一个字符串sss,令f(a)f(a)f(a)表示字符串aaa在sss中出现次数,特别地,还会给出若干个非法位置,以这些位置为结尾的字符串不会统计入出现次数中。求最大的∣a∣⋅f(a)|a|\cdot f(a)∣a∣⋅f(a)。n≤2×105n\leq 2\times 10^5n≤2×105【解题思路】如果用SAM\text{SAM}SAM来做就没什么意思了,直接合并rig...原创 2019-04-25 06:47:41 · 330 阅读 · 0 评论 -
【SAM】BZOJ5137 [Usaco2017 Dec] Standing Out from the Herd
【题目】lydsy给定nnn个字符串,对于每个字符串,问只在这个字符串中出现的子串有多少个。n,∑∣S∣≤105n,\sum|S|\leq 10^5n,∑∣S∣≤105【解题思路】随便写写板子吧。建出广义SAM\text{SAM}SAM后自下而上合并right\text{right}right集合即可,实现时就是给每个结束节点打个颜色标记,若标记相同就设成−1-1−1就好了。试图冲榜...原创 2019-04-22 15:40:18 · 336 阅读 · 0 评论 -
【SAM】BZOJ3473/CF204E Little Elephant and Strings
【题目】lydsyCF给定nnn个字符串,问每个字符串有多少个非空子串是所有nnn个字符串中至少kkk个的子串。∑∣S∣≤105\sum |S|\leq 10^5∑∣S∣≤105【解题思路】广义SAM\text{SAM}SAM板子题。每个节点维护一个set\text{set}set来启发式合并可以得到该节点子串所有的颜色,于是就可以记下来有哪些节点有贡献。再用每个串在SAM\tex...原创 2019-04-25 21:44:20 · 261 阅读 · 0 评论 -
【SAM/SA+主席树+拓扑DP】LOJ3049 [十二省联考 2019] 字符串问题
【题目】LOJ给定一个长度为nnn的字符串,在其中选择nanana段区间作为AAA字符串集,选出nbnbnb段区间作为BBB字符串集,区间之间互不影响。再给定mmm组支配关系(x,y)(x,y)(x,y),表示AAA集中第xxx个字符串能支配BBB集中第yyy个字符串。求一个长度最大的字符串TTT,存在一个分割T=t1+t2+⋯+tkT=t_1+t_2+\cdots +t_kT=t1+t2...原创 2019-04-12 22:11:07 · 286 阅读 · 0 评论 -
【SAM+线段树合并】LOJ2479 [九省联考 2018] 制胡窜
【题目】LOJ给定一个字符串SSS,有QQQ次询问,每次给出一个字符串Sl,rS_{l,r}Sl,r,求有多少对(i,j)(i<j)(i,j)(i<j)(i,j)(i<j)满足将SSS从这里断开后,至少有一段存在Sl,rS_{l,r}Sl,r。(有n−1n-1n−1个可行的断点)n≤105,Q≤3×105n\leq 10^5,Q\leq 3\times ...原创 2019-04-15 21:20:13 · 314 阅读 · 0 评论 -
【SAM+扫描线+BIT】CC_SUBQUERY Substring Query
【题目】Codechef给定一个字符串SSS和QQQ个询问,每个询问形如(li,pi)(l_i,p_i)(li,pi),回答有多少个长度为lil_ili的字符串在SSS中恰好出现了pip_ipi次。∣S∣≤2×105,Q≤5×105|S|\leq 2\times 10^5,Q\leq 5\times 10^5∣S∣≤2×105,Q≤5×105【解题思路】字符串题,不妨先建出SAM...原创 2019-03-01 11:44:40 · 201 阅读 · 0 评论 -
【SAM】51Nod1647 小Z的Trie
【前言】本来是用来愉悦身心的题目,结果因为自己一些zz错误弄得很不愉悦。【题目】51Nod给定一棵Trie\text{Trie}Trie(实际上是给出字符串自己建),QQQ次询问Trie\text{Trie}Trie上等于(x,y)(x,y)(x,y)的字符串(s,t)(s,t)(s,t)有多少个。其中二元组前一个是后一个的祖先。Q≤105Q\leq 10^5Q≤105,给出字符串总长≤...原创 2019-02-22 21:50:09 · 243 阅读 · 0 评论 -
【SAM套路/AC自动机+主席树】CF547E Mike and Friends
【题目】CF给定nnn个串aia_iai,QQQ组询问al∼ara_l\sim a_ral∼ar中axa_{x}ax出现了多少次。∑∣ai∣≤2×105,Q≤5×105\sum |a_i| \leq 2\times 10^5,Q\leq 5\times 10^5∑∣ai∣≤2×105,Q≤5×105【解题思路】这种东西显然SAM\text{SAM}SAM线段树合并就可以做了吧。...原创 2019-01-26 14:34:04 · 810 阅读 · 0 评论 -
【背板子-SAM】CF700E BZOJ3413 BZOJ2806 LOJ6041
【前言】SAM\text{SAM}SAM真是一个玄学数据结构。【题目】CF700E Cool SlogansCF给定一个字符串s[1]s[1]s[1]。一个字符串序列s[]s[ ]s[]满足s[i]s[i]s[i]至少在s[i−1]s[i-1]s[i−1]中出现过两次。求最大可行序列长。n≤2×105n\leq 2\times 10^5n≤2×105首先建出SAM\text{SAM}S...原创 2019-01-24 20:26:11 · 413 阅读 · 0 评论 -
【LCT+SAM+线段树】LOJ6041 事情的相似度
【题目】原题地址给定一个010101串sss,定义pi=s[1…i]p_i=s[1\dots i]pi=s[1…i]。多组询问l,rl,rl,r表示询问l≤i&lt;j≤rl\leq i&lt;j\leq rl≤i<j≤r,lcs(pi,pj)lcs(p_i,p_j)lcs(pi,pj)的最大值。【解题思路】在SAM\text{SAM}SAM上,两个节点的LC...原创 2019-01-24 20:18:14 · 471 阅读 · 0 评论 -
【SAM+线段树合并】LGP4770 [NOI2018]你的名字
【题目】原题地址给定一个字符串SSS,多组询问给定字符串TTT以及两个数字l,rl,rl,r。求S[l..r]S[l..r]S[l..r]中有多少个子串xxx满足:xxx的任意一个子串没有在TTT中出现过。∣S∣,∑∣T∣≤5×105|S|,\sum |T| \leq 5\times 10^5∣S∣,∑∣T∣≤5×105【解题思路】加深对SAM\text{SAM}SAM的理解。既然是字符...原创 2018-12-24 16:48:11 · 693 阅读 · 0 评论 -
【广义SAM+线段树合并】CF666E Forensic Examination
【题目】原题地址给定一个模式串SSS和nnn个匹配串TiT_iTi。qqq个询问形如(l,r,pl,pr)(l,r,pl,pr)(l,r,pl,pr),问S[pl…pr]S[pl\dots pr]S[pl…pr]在Tl…TrT_l\dots T_rTl…Tr中哪个出现了最多次(可重叠),输出这个次数和是哪个串。∣S∣,q≤5×105,n,∑∣T∣≤5×104|S|,q\leq 5\ti...原创 2018-12-18 14:22:18 · 513 阅读 · 0 评论 -
【后缀数组/SAM+边分树合并】LGP5115 Check,Check,Check one two!
【题目】原题地址给定一个字符串SSS,求∑1≤i&amp;amp;lt;j≤nlcp(i,j)lcs(i,j)[lcp(i,j)≤k1][lcs(i,j)≤k2]\sum_{1\leq i&amp;amp;lt;j\leq n}lcp(i,j)lcs(i,j)[lcp(i,j)\leq k_1][lcs(i,j)\leq k_2]1≤i&amp;lt;j≤n∑lcp(i,j)lcs(i,j)[lcp(i,j)≤k1...原创 2018-12-28 10:52:56 · 869 阅读 · 0 评论 -
【SAM+线段树合并/SA+扫描线】CF1037H Security
【题目】原题地址给定一个长度为nnn的字符串SSS和qqq个询问,每次询问形如l&amp;amp;nbsp;r&amp;amp;nbsp;Tl\ r\ Tl&amp;amp;nbsp;r&amp;amp;nbsp;T,其中TTT是一个字符串,表示询问sl,…,srs_l,\dots,s_rsl,…,sr这个字符串中比TTT字典序大的字典序最小的子串是什么,如没有则输出−1-1−1。n≤105,q,∣S∣,∑∣T∣≤2×105n\leq原创 2018-12-02 15:39:29 · 506 阅读 · 0 评论