
后缀自动机
clover_hxy
The secret oppotunities are hidden inside every failure....
展开
-
bzoj 2555: SubString (LCT+后缀自动机)
2555: SubStringTime Limit: 30 Sec Memory Limit: 512 MBSubmit: 1942 Solved: 554[Submit][Status][Discuss]Description 懒得写背景了,给你一个字符串init,要求你支持两个操作 (1):在当前字符串的后面插入一个字符串原创 2016-12-25 14:09:15 · 1083 阅读 · 0 评论 -
bzoj 4180: 字符串计数 (后缀自动机+矩阵乘法)
4180: 字符串计数Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 140 Solved: 63[Submit][Status][Discuss]DescriptionSD有一名神犇叫做Oxer,他觉得字符串的题目都太水了,于是便出了一道题来虐蒟蒻yts1999。他给出了一个字符串T,字符串T中有且仅有4种字符 '原创 2017-03-04 16:39:06 · 1071 阅读 · 2 评论 -
bzoj 3473: 字符串 (后缀自动机)
题目描述传送门题目大意:给定n个字符串,询问每个字符串有多少子串(不包括空串)是所有n个字符串中至少k个字符串的子串?题解同bzoj3277代码#include<iostream>#include<algorithm>#include<cstdio>#include<cstring>#define N 200003#define LL long longusing namespace s原创 2017-03-28 11:28:13 · 767 阅读 · 0 评论 -
后缀自动机的构造
后缀自动机的构造最近看了一些后缀自动机的论文,对于后缀自动机的构造过程有了些许了解。首先后缀自动机顾名思义就是一颗包含了原串s所有后缀的字母树。如果直接像构建trie树的方式构建节点数应该是|S|^2,这个空间显然承受不住。观察上图可以发现有很多的节点都只有一个儿子,并且相同的部分非常多,所以后缀自动机就是用增量法进行构造,使最终的状态数变成|s|。在后缀自动机中每个节点可能会原创 2016-12-20 10:58:56 · 2382 阅读 · 0 评论 -
SPOJ 1812 LCS2 - Longest Common Substring II (后缀自动机)
P2673【后缀自动机】最长公共子串IITime Limit : 10000 MS Memory Limit : 123456 KBDescription给定若干个(Input Format若干行,每行一个字符串。请用EOF判断输入文件结束。Output Format一个整数,为原创 2016-12-19 21:05:12 · 613 阅读 · 0 评论 -
SPOJ 8222 NSUBSTR - Substrings (后缀自动机)
P2674【后缀自动机】重复子串时间限制 : 10000 MS 空间限制 : 123456 KB问题描述给定字符串s,定义F(x)表示s的所有长度为x的子串中,重复出现次数最多子串在s中的出现的次数,两次出现可以有部分重叠。现给定字符串s,求F(1),F(2),...,F(length(s)).输入格式原创 2016-12-19 23:19:36 · 565 阅读 · 0 评论 -
后缀自动机的性质应用
之前自己整理过后缀自动机的构造,现在再来整理一波性质。最长公共子串这个问题非常常见,大概可以根据难易程度分成两种。两个串的最长公共子串这个问题可以用DP来解决,也可以用后缀数组。 DP的效率比较低,后缀数组的话将两个串用分隔符连接起来求出height数组,取sa[i],sa[i-1]分别属于两个串的height的最大值即可。 那么利用后缀自动机该怎么做呢?我们将A串建立后缀自动机,然后用B串在后原创 2017-03-29 09:50:41 · 2970 阅读 · 3 评论 -
bzoj 4199: [Noi2015]品酒大会 (后缀自动机+DP)
题目描述传送门题目大意:两个长度为r的子串相同称为r相似。两个r相似的子串的价值是两个子串开头位置的价值乘积。 求r相似的子串数量和最大的代价(r=0…n-1)题解后缀自动机parent树上两个点的lca的len是两个字符串的最长公共后缀,但是这个要求的是开头位置的乘积,所以我就考虑将串反置,建立后缀自动机并构建parent树。 然后在parent树上进行树形DP ,我们知道在parent树上的原创 2017-03-30 07:32:22 · 606 阅读 · 0 评论 -
bzoj 4556: [Tjoi2016&Heoi2016]字符串 (主席树+二分+后缀数组+ST表||后缀自动机+线段树合并+LCA)
题目描述传送门题目大意:给出一个长度为n的字符串,每次询问[a,b]中的子串与[c,d]的最长公共前缀的长度的最大值题解对字符串建立后缀数组。我们知道两个后缀的最长公共后缀等于区间[rank[i]+1,rank[j]]的height的最小值,那么因为是取min,所以区间的长度越长答案肯定不可能更优。 建立主席树,将i插入到rank[i]的位置,然后在主席树中维护每个区间的最靠左/最靠右的位置。原创 2017-03-29 21:53:20 · 787 阅读 · 0 评论 -
bzoj 2882: 工艺 (后缀自动机+map)
2882: 工艺Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 596 Solved: 266[Submit][Status][Discuss]Description小敏和小燕是一对好朋友。他们正在玩一种神奇的游戏,叫Minecraft。他们现在要做一个由方块构成的长条工艺品。但是方块现在是乱的,而且由于机器原创 2016-12-21 09:35:40 · 575 阅读 · 0 评论 -
bzoj 1398: Vijos1382寻找主人 Necklace (后缀自动机)
题目描述传送门题目大意:判断两个串是否同构,并超出与其同构的最小表示。题解这道题貌似是最小表示法的裸题,但是我们并不会最小表示法,所以就用后缀自动机来做了,但是这道题的内存按理来说是不能写后缀自动机的,数据比较水就过了。。。。 将第一串扩大两倍,然后建立后缀自动机。用第二个串在上面匹配,如果匹配的长度等于串长那么就同构。至于最小表示,直接从后缀自动机的根开始每次找最小的子节点向后走,走到串长的长度原创 2017-04-05 08:08:56 · 412 阅读 · 0 评论 -
bzoj 4545: DQS的trie (后缀自动机+LCT)
题目描述传送门题目大意: 给出一棵trie树 (1)询问当前trie的本质不同的子串数目是多少。 (2)以点rt为根向下长出一个子树,大小为si。 接下来si-1行,每行两个整数u,v和一个字符c,表示u号节点和v号节点之间有一条边,边上的字母为c。若长出子树之前当前树的大小是n,则这si-1点的编号分别为n+1,n+2…n+si-1。 (3)一个字符串S,询问字符串S在当前trie中的出原创 2017-05-04 21:39:47 · 643 阅读 · 0 评论 -
bzoj 4032: [HEOI2015]最短不公共子串 (DP+后缀自动机)
4032: [HEOI2015]最短不公共子串Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 430 Solved: 209[Submit][Status][Discuss]Description 在虐各种最长公共子串、子序列的题虐的不耐烦了之后,你决定反其道而行之。一个串的“子串”指的是它的连续的一段,例如bcd是ab原创 2017-02-18 19:21:20 · 799 阅读 · 2 评论 -
bzoj 1396: 识别子串 (后缀自动机+线段树)
1396: 识别子串Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 308 Solved: 190[Submit][Status][Discuss]DescriptionInput一行,一个由小写字母组成的字符串S,长度不超过10^5OutputL行,每行一个整数,第i行的数据表示关于S的第i个元素的原创 2017-01-12 21:33:58 · 1815 阅读 · 1 评论 -
bzoj 2806: [Ctsc2012]Cheat (后缀自动机+dp+单调队列)
2806: [Ctsc2012]CheatTime Limit: 20 Sec Memory Limit: 256 MBSubmit: 1056 Solved: 544[Submit][Status][Discuss]DescriptionInput第一行两个整数N,M表示待检查的作文数量,和小强的标准作文库的行数接下来M行的01串,表示标准原创 2017-01-11 21:11:41 · 630 阅读 · 0 评论 -
bzoj 3277: 串 (广义后缀自动机)
3277: 串Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 357 Solved: 144[Submit][Status][Discuss]Description字符串是oi界常考的问题。现在给定你n个字符串,询问每个字符串有多少子串(不包括空串)是所有n个字符串中至少k个字符串的子串(注意包括本身)。Inpu原创 2016-12-24 17:48:17 · 2518 阅读 · 2 评论 -
bzoj 2780: [Spoj]8093 Sevenk Love Oimaster (广义后缀自动机)
2780: [Spoj]8093 Sevenk Love OimasterTime Limit: 1 Sec Memory Limit: 128 MBSubmit: 738 Solved: 257[Submit][Status][Discuss]Description Oimaster and sevenk love each other. But原创 2016-12-24 16:21:56 · 1346 阅读 · 3 评论 -
bzoj 3238: [Ahoi2013]差异 (后缀自动机+树形dp)
3238: [Ahoi2013]差异Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 2268 Solved: 1031[Submit][Status][Discuss]DescriptionInput一行,一个字符串SOutput 一行,一个整数,表示所求值Sample Input原创 2016-12-22 07:22:32 · 818 阅读 · 0 评论 -
bzoj 4566: [Haoi2016]找相同字符(后缀自动机)
4566: [Haoi2016]找相同字符Time Limit: 20 Sec Memory Limit: 256 MBSubmit: 208 Solved: 125[Submit][Status][Discuss]Description给定两个字符串,求出在两个字符串中各取出一个子串使得这两个子串相同的方案数。两个方案不同当且仅当这两个子串中有一个位置不同。原创 2016-12-21 20:46:56 · 598 阅读 · 0 评论 -
bzoj 3926: [Zjoi2015]诸神眷顾的幻想乡(广义后缀自动机)
3926: [Zjoi2015]诸神眷顾的幻想乡Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 1009 Solved: 596[Submit][Status][Discuss]Description 幽香是全幻想乡里最受人欢迎的萌妹子,这天,是幽香的2600岁生日,无数幽香的粉丝到了幽香家门前的太阳花田上来为幽香庆祝生日。原创 2016-12-21 16:51:56 · 988 阅读 · 0 评论 -
bzoj 4516: [Sdoi2016]生成魔咒 (后缀自动机)
4516: [Sdoi2016]生成魔咒Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 652 Solved: 359[Submit][Status][Discuss]Description魔咒串由许多魔咒字符组成,魔咒字符可以用数字表示。例如可以将魔咒字符 1、2 拼凑起来形成一个魔咒串 [1,2]。一个魔咒串 S 的原创 2016-12-21 10:47:19 · 540 阅读 · 0 评论 -
poj 1743 Musical Theme(后缀自动机)
Musical ThemeTime Limit: 1000MS Memory Limit: 30000KTotal Submissions: 27471 Accepted: 9278DescriptionA musical melody is represented as a sequence of N (1<=N<=20原创 2016-12-21 08:43:24 · 827 阅读 · 4 评论 -
bzoj 3998: [TJOI2015]弦论 (后缀自动机)
3998: [TJOI2015]弦论Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 2024 Solved: 665[Submit][Status][Discuss]Description对于一个给定长度为N的字符串,求它的第K小子串是什么。Input 第一行是一个仅由小写英文字母构成的字符串S第二行为两原创 2016-12-20 22:00:31 · 550 阅读 · 0 评论 -
SPOJ 7258 SUBLEX - Lexicographical Substring Search (后缀自动机)
P2675【后缀自动机】第k小子串ITime Limit : 10000 MS Memory Limit : 123456 KBDescription给定一个字符串s,每次提问它的第k小子串。如果某个字符串再s中重复出现,将其看做一个子串。Input Format第一行一个字符串s.第二行一原创 2016-12-20 19:21:49 · 742 阅读 · 0 评论 -
bzoj 2946: [Poi2000]公共串 (后缀自动机)
2946: [Poi2000]公共串Time Limit: 3 Sec Memory Limit: 128 MBSubmit: 783 Solved: 340[Submit][Status][Discuss]Description 给出几个由小写字母构成的单词,求它们最长的公共子串的长度。任务:l 读入单词l原创 2016-12-20 18:47:11 · 449 阅读 · 0 评论 -
code vs 3160 最长公共子串(后缀自动机)
题目描述 Description给出两个由小写字母组成的字符串,求它们的最长公共子串的长度。输入描述 Input Description读入两个字符串输出描述 Output Description输出最长公共子串的长度样例输入 Sample Inputyeshowmuchiloveyoumydearmoth原创 2016-12-19 20:52:39 · 599 阅读 · 0 评论 -
FJWC2017 Day3 T2 recollection (后缀自动机+线段树合并)
题目描述传送门题目大意: 现在有一棵n个节点的树,点的编号是1到n,1号点是根节点,每条边上有一个字符(用不大于300的非负整数表示),且对于任意的一个点u,e:u→v(u=father[v])e:u→v(u=father[v])上的字符互不相同。 定义r(u)为从节点u到根节点的路径上的字符组成的字符串。 两个节点u,v的相似度f(u,v)定义如下: f(u,v)=Lcp(r(原创 2017-08-19 20:32:05 · 1823 阅读 · 0 评论