
后缀自动机
olahiuj
我的女朋友不抽烟不喝酒不傲娇不化妆不存在
展开
-
bzoj3238 [Ahoi2013]差异
Description定义lcp(a,b)为字符串a、b的最长公共前缀,len(a)为字符串a的长度。对于长度位n的字符串S定义Ti为S从第i位开始的后缀,求∑1<=i<j<=nlen(Ti)+len(Tj)−len(lcp(Ti,Tj))∑1<=i<j<=nlen(Ti)+len(Tj)−len(lcp(Ti,Tj))\sum_{1...原创 2018-02-09 15:45:48 · 224 阅读 · 0 评论 -
bzoj1921 [CTSC2010]珠宝商 SAM+后缀树+点分治
Description有一棵n个节点的树和一个长度为m的字符串S,树上每个节点有一个字符。问对于任意的有序数对(x,y),从x到y路径组成的字符串在S中出现次数的和。n,m≤5⋅104n,m\le5\cdot10^4n,m≤5⋅104Solution很显然要在SAM上跑,我们要求的是所有路径组成的串在SAM上size的和,那么一个显然的响法就是我们点分治然后合并跨越不同子树的路径记当...原创 2019-04-01 16:44:17 · 212 阅读 · 0 评论 -
bzoj5084 hashit 广义SAM+树链的并
Description你有一个字符串S,一开始为空串,要求支持两种操作在S后面加入字母C删除S最后一个字母问每次操作后S有多少个两两不同的连续子串Solution似乎暴力也能过的样子一个显然的做法就是建后缀平衡树,但是好像有点难写啊考虑离线,给出的串刚好就是一棵Trie,我们按照Trie建广义SAM之后模拟就可以了具体说就是每次都在处理Trie上的一条链,答案就是这些点在pa...原创 2019-03-25 21:41:18 · 299 阅读 · 0 评论 -
FJWC2019 原样输出 SAM+拓扑排序
Descriptionnealchen 是一只 copycat。它会把输入按行读入,原封不动地复制到输出中去。但是在一次更新以后,它的程序出了一些问题。它没法输出换行符了。并且,读入的时候,总会莫名其妙地随机漏掉开头和结尾的若干个字符,甚至整行都会漏掉。比如 orznight 可能会变成 rzni ,orz,h 或者空串。现在你找到一份输入文件丢给 nealchen,你想知道它的输...原创 2019-03-19 21:29:09 · 277 阅读 · 0 评论 -
bzoj2555 SubString 后缀自动机+LCT
Description要求资瓷插入一个字符串查询一个字符串出现的次数墙制在线,长度 <= 600000,询问次数<= 10000,询问总长度<= 3000000Solution拍半天暴力打错了OTZ据说原本暴力可过???考虑单次询问怎么做。我们建出模板串的SAM在上面跑,终点的right集合大小显然就是答案由于这题是动态的,于是我们extend的时候动态...原创 2018-11-28 17:15:16 · 209 阅读 · 0 评论 -
A String Game 后缀自动机+SG函数
Description最近 Alice 和 Bob 在玩一个和字符串有关的游戏。在游戏开始之前,他们会准备 n个字符串 s1~sn,和一个模板串 t, 保证这 n 个字符串都是 t 的子串。 游戏开始后,他们会轮流地执行以下操作,由 Alice 先手。从 n 个字符串中选择一个字符串 si在 si 末尾增加一个字符;得到的新字符串需要是 t 的子串; 如果上述过程无法...原创 2018-08-07 19:55:28 · 383 阅读 · 0 评论 -
bzoj4516 [Sdoi2016]生成魔咒 后缀自动机
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-05-18 21:18:58 · 142 阅读 · 0 评论 -
bzoj4566 [Haoi2016]找相同字符
Description给定两个字符串,求出在两个字符串中各取出一个子串使得这两个子串相同的方案数。两个方案不同当且仅当这两 个子串中有一个位置不同。两行,两个字符串s1,s2,长度分别为n1,n2。1 <=n1, n2<= 200000,字符串中只有小写字母Solution比较容易想到用sam来做。分别把两个串插进sam里面,对于sam上的一个节点i,len[fa...原创 2018-03-28 20:59:55 · 394 阅读 · 0 评论 -
bzoj4199 [Noi2015]品酒大会
Description一年一度的“幻影阁夏日品酒大会”隆重开幕了。大会包含品尝和趣味挑战 两个环节,分别向优胜者颁发“首席品酒家”和“首席猎手”两个奖项,吸引了众多品酒师参加。 在大会的晚餐上,调酒师 Rainbow 调制了 n 杯鸡尾酒。这 n 杯鸡尾酒排成一行,其中第 n 杯酒 (1 ≤ i ≤ n) 被贴上了一个标签si,每个标签都是 26 个小写 英文字母之一。设 str(l, ...原创 2018-04-09 21:56:51 · 157 阅读 · 0 评论 -
bzoj3473 字符串
Description给定n个字符串,询问每个字符串有多少子串(不包括空串)是所有n个字符串中至少k个字符串的子串?对于 100% 的数据,1<=n,k<=10^5 所有字符串总长不超过10^5 字符串只包含小写字母Solution感觉还有很多后缀自动机的玩法不太懂可以建广义sam,每个节点用set记录包含哪些给定字符串的子串,然后就可以启发式合并求ri...原创 2018-03-30 21:59:21 · 207 阅读 · 0 评论 -
bzoj3998 [TJOI2015]弦论
Description对于一个给定长度为N的字符串,求它的第K小子串是什么。 T为0则表示不同位置的相同子串算作一个。T=1则表示不同位置的相同子串算作多个。K的意义如题所述。N<=5*10^5 T<2 K<=10^9Solution涨姿势了 几周不打后缀自动机又不会打了,幸好还记得性质能推一推 T=0的时候每个点的right集看做是1,T=...原创 2018-03-04 20:31:54 · 250 阅读 · 0 评论 -
bzoj2946 [Poi2000]公共串
Description给出几个由小写字母构成的单词,求它们最长的公共子串的长度。任务: 读入单词 计算最长公共子串的长度 输出结果1<=n<=5 单词只由小写字母组成,长度至少为1,最大为2000。Solution我好弱啊,写完搜题解才发现可以巧妙地hash+二分回忆一下两个串的时候把第一个建sam第二个扔上去跑,记录每...原创 2018-02-12 14:14:29 · 267 阅读 · 0 评论 -
AtCoder Regular Contest 097 题解
C K-th Substringk才5,随便做都行。当然也可以SAM求第k大#include <stdio.h>#include <string.h>#include <algorithm>#include <iostream>#include <string>#define rep(i,st,ed) for (int ...原创 2019-04-22 15:06:16 · 274 阅读 · 0 评论