摘要: "HDU 4416 Good Article Good sentence " Problem : 给一个串S,和一些串T,询问S中有多少个子串没有在T中出现。 Solution : 首先对所有的T串建立后缀自动机,统计出本质不同的子串个数ans1,再将S串插入后缀自动机,统计出本质不同的子串个数an 阅读全文
posted @ 2017-07-21 17:42 rpSebastian 阅读(509) 评论(0) 推荐(1) 编辑
摘要: "SPOJ SUBLEX " Problem : 给一个长度为n的字符串,要求输出字典序第k小的子串。 Solution : 首先对字符串建立后缀自动机。从根节点开始根据nt数组即后缀链进行一边dfs记忆化搜索,预处理出当前状态下之后还能形成的字符串数量。对于每一个询问,从小到大枚举每一位的每个字母 阅读全文
posted @ 2017-07-21 17:01 rpSebastian 阅读(272) 评论(0) 推荐(0) 编辑
摘要: "SPOJ NSUBSTR" Problem : 给一个长度为n的字符串,要求分别输出长度为1~n的子串的最多出现次数。 Solution : 首先对字符串建立后缀自动机,在根据fail指针建立出后缀树,对于n个后缀对应的节点打上标记,则每个结点对应的一些子串所出现的次数即为其子树内标记的个数,在后 阅读全文
posted @ 2017-07-21 16:57 rpSebastian 阅读(234) 评论(0) 推荐(0) 编辑
摘要: "SPOJ LCS2" Problem : 给若干个串,询问这些串的最长公共子串。 Solution : 对第一个串建立后缀自动机,对于之后的每个串在后缀自动机上进行匹配。每个节点记录当前串所匹配到的长度以及所有串所匹配到的长度最小值,需要注意的是如果一个串在某个节点匹配成功,那么其fail到根的路 阅读全文
posted @ 2017-07-21 14:13 rpSebastian 阅读(214) 评论(0) 推荐(0) 编辑
摘要: "SPOJ LCS" Problem : 给两个串S、T,询问两个串的最长公共子串。 Solution : 复(yu)习(xi)了一下后缀自动机。后缀自动机一定要结合后缀树来理解呀 !!!后缀自动机的fail指针实现了原串的逆序的后缀树,后缀自动机的nt转移数组相当于后缀树上的后缀链。 C++ in 阅读全文
posted @ 2017-07-21 12:14 rpSebastian 阅读(206) 评论(0) 推荐(0) 编辑