随笔分类 -  字符串

摘要:[BZOJ4032][HEOI2015]最短不公共子串(后缀自动机+序列自动机+DP) 题面 给两个小写字母串A,B,请你计算: (1) A的一个最短的子串,它不是B的子串 (2) A的一个最短的子串,它不是B的子序列 (3) A的一个最短的子序列,它不是B的子串 (4) A的一个最短的子序列,它不 阅读全文
posted @ 2020-04-20 21:28 birchtree 阅读(177) 评论(0) 推荐(0)
摘要:[BZOJ4545]DQS的Trie(广义SAM+离线+树状数组) 题面 一颗 Trie 树,q 次操作,操作有3种: 1.求这棵树上本质不同的子串数量 2.插入一个子树,保证总大小不超过 100000 3.询问一个字符串在 Trie 树上出现过多少次,保证所有询问串总长度不超过 100000 分析 阅读全文
posted @ 2020-04-03 19:43 birchtree 阅读(232) 评论(0) 推荐(0)
摘要:[HAOI2016]找相同字符(广义SAM) 题面 给定两个字符串,求出在两个字符串中各取出一个子串使得这两个子串相同的方案数。两个方案不同当且仅当这两个子串中有一个位置不同。 分析 此题有一个比较繁琐的 "后缀数组做法" ,但是用广义SAM可以秒杀。 把两个串建成广义SAM,对于每个后缀,记录$e 阅读全文
posted @ 2020-04-03 18:53 birchtree 阅读(143) 评论(0) 推荐(0)
摘要:[BZOJ3879]SvT(后缀树+虚树) 题面 有一个长度为n的仅包含小写字母的字符串S,下标范围为[1,n]. 现在有若干组询问,对于每一个询问,我们给出若干个后缀(以其在S中出现的起始位置来表示),求这些后缀两两之间的LCP的长度之和.一对后缀之间的LCP长度仅统计一遍. 分析 建出S的后缀树 阅读全文
posted @ 2020-03-29 19:48 birchtree 阅读(226) 评论(0) 推荐(0)
摘要:[GDOI2017]微信(广义SAM+状态压缩) 题面 题面过长,略 分析 先把n个串合并建出Trie. 由于n很小,对于Trie的每个节点,我们用状压记录这个节点代表的子串来自哪些串。然后BFS这个Trie,建出广义SAM.对于SAM中新建的每个节点,同样维护这个子串来自哪些串,构建的时候把它赋值 阅读全文
posted @ 2020-03-23 22:18 birchtree 阅读(222) 评论(0) 推荐(0)
摘要:[BZOJ3756]Pty的字符串(广义SAM) 题面 在神秘的东方有一棵奇葩的树,它有一个固定的根节点(编号为1)。树的每条边上都是一个字符,字符为a,b,c中的一个. 你可以从树上的任意一个点出发,然后沿着远离根的边往下行走,在任意一个节点停止,将你经过的边的字符依次写下来,就能得到一个字符串 阅读全文
posted @ 2020-03-21 13:00 birchtree 阅读(201) 评论(0) 推荐(0)
摘要:[BZOJ 3145]Str(SAM+启发式合并) 题面 Arcueid得知了两者的DNA片段,想寻求一个DNA片段,使得其在两者的DNA中都出现过。我们知道公主的脑袋有点不太灵活,如果两个DNA片段只有一个位置不同,她也会将其认为是相同的。所以请您找出这样的最长的DNA片段吧。 分析 考虑两个串中 阅读全文
posted @ 2020-03-17 15:42 birchtree 阅读(276) 评论(0) 推荐(0)
摘要:[Codeforces1037H]Security(SAM+线段树合并) 题面 分析 CF什么时候也开始出这种套路题了 和[NOI2018]你的名字几乎一模一样,看到区间串问题,用线段树维护right集合,每次沿着转移边走的时候要判断一下转移到的节点的right集合中是否有在$[l,r]$内的值. 阅读全文
posted @ 2020-03-16 09:56 birchtree 阅读(231) 评论(0) 推荐(0)
摘要:[BZOJ1921][CTSC2010]珠宝商(点分治+后缀自动机) 题面 给出一个$n$个点的树,每个点上都有一个字符。再给出一个长度为$m$的特征串$str$。求树上所有简单路径经过节点的字符按顺序连接起来后的串在特征串中的出现次数之和。 分析 显然发现是点分治。考虑如何计算经过一个点$x$的所 阅读全文
posted @ 2020-03-12 19:01 birchtree 阅读(202) 评论(0) 推荐(0)
摘要:[NOI2018]你的名字(后缀自动机+线段树合并) 题面 给出一个字符串$S$,有$q$组询问,每次询问给出一个字符串$T$和整数$l,r$.问能从$T$中选出多少个本质不同的子串,满足这个子串在$S$的区间$[l,r]$没有出现过。 $|S| \leq 5 \times 10^5,q \leq 阅读全文
posted @ 2020-03-04 22:17 birchtree 阅读(313) 评论(0) 推荐(0)
摘要:[LuoguP4287][SHOI2011]双倍回文(回文自动机) 题面 定义一个字符串为"双倍回文",当且仅当它是回文串,长度为4的倍数,且前一半和后一半的字符串都是回文串。如$\texttt{abbaabba}$ 给出一个字符串$S$,求它的最长双倍回文子串的长度。 $|S|\leq 5 \ti 阅读全文
posted @ 2020-03-01 20:54 birchtree 阅读(147) 评论(0) 推荐(0)
摘要:[BZOJ 3277]字符串(后缀自动机) 题面 给定n个字符串,询问每个字符串有多少子串(不包括空串)是所有n个字符串中至少k个字符串的子串? 分析 首先,我们把所有字符串建成一个广义SAM.(实际上,只需要插入完每个字符串之后吧last设回根节点) 然后对于每个字符串,在自动机上跑,对于跑到的每 阅读全文
posted @ 2020-02-26 22:29 birchtree 阅读(210) 评论(0) 推荐(0)
摘要:[Luogu P3649] [APIO2014]回文串(后缀自动机)(或回文自动机) 题面 给出一个长度为$n$的字符串,求它的所有回文子串的出现次数乘以长度的最大值 $1 \leq n \leq 3 \times 10^5$ 分析 SAM做法: 方法来自2015年国家集训队论文。吐槽:为什么网上的 阅读全文
posted @ 2020-02-26 22:01 birchtree 阅读(240) 评论(0) 推荐(0)
摘要:[BZOJ1195] [HNOI2006] 最短母串(AC自动机+状压bfs) 题面 给定n个字符串(S1,S2...Sn),要求找到一个最短的字符串T,使得这n个字符串都包含这个字符串 $n \leq 12,|S| \leq 50$ 分析 在自动机上bfs,bfs的深度就是字符串长度。$n$很小, 阅读全文
posted @ 2020-02-22 19:30 birchtree 阅读(122) 评论(0) 推荐(0)
摘要:[LuoguP5319] [BJOI2019] 奥术神杖 (01分数规划+AC自动机+dp) 题面 神杖上从左到右镶嵌了$n$颗奥术宝石,奥术宝石一共有 1010 种,用数字 表示。有些位置的宝石已经残缺,用 表示,你需要用完好的奥术宝石填补每一处残缺的部分(每种奥术宝石个数不限,且不能够更换未残缺 阅读全文
posted @ 2020-02-15 17:55 birchtree 阅读(230) 评论(0) 推荐(0)
摘要:[Codeforces 580D]Fizzy Search(FFT) 题面 给定母串和模式串,字符集大小为4,给定k,模式串在某个位置匹配当且仅当任意位置模式串的这个字符所对应的母串的位置的左右k个字符之内有一个与它相同的,求模式串能全部匹配的次数。 分析 我们先考虑$k=0$的情况,即一般的字符串 阅读全文
posted @ 2020-02-07 10:43 birchtree 阅读(346) 评论(0) 推荐(0)
摘要:[BZOJ 4212]神牛的养成计划(Trie+可持久化Trie) 题面 已知n个字符串,有m个询问(强制在线)。每个询问给出两个字符串$s_1,s_2$,问$n$个字符串中有多少个字符串满足既是$s_1$的前缀,又是$s_2$的后缀 $n$个字符串总长度$\leq 2 \times 10^6$,$ 阅读全文
posted @ 2020-01-31 20:28 birchtree 阅读(258) 评论(0) 推荐(0)
摘要:[LuoguP4094] [HEOI2016] [TJOI2016]字符串(二分答案+后缀数组+ST表+主席树) 题面 给出一个长度为$n$的字符串$s$,以及$m$组询问.每个询问是一个四元组$(a,b,c,d)$,问$s[a,b]$的所有子串和字符串$s[c,d]$的最长公共前缀长度的最大值。 阅读全文
posted @ 2020-01-31 20:14 birchtree 阅读(146) 评论(0) 推荐(0)
摘要:[BZOJ 2865]字符串识别(后缀数组+线段树)(或后缀自动机+线段树) 题面 给定一个字符串S,与一个整数K,定义S的子串T=S(i, j)是关于第K位的识别子串,满足以下两个条件: 1、i≤K≤j。 2、子串T只在S中出现过一次。 现在,给定S,XX希望知道对于S的每一位,最短的识别子串长度 阅读全文
posted @ 2020-01-31 19:59 birchtree 阅读(270) 评论(0) 推荐(0)
摘要:[NOI2016]品酒大会(后缀数组+并查集) 题面 给出一个 长度为 n 的字符串,每一位有一个权值 val。定义两个位字符为 r 相似,是指分别从这两个字符开始,到后面的 r 个字符都相等。两个 r 相似的字符还有一个权值为这两个字符权值的乘积。问对于 $r \in [0,n 1]$,统计出有多 阅读全文
posted @ 2020-01-31 19:39 birchtree 阅读(182) 评论(0) 推荐(0)