随笔分类 -  sam

摘要:题目链接:http://uoj.ac/problem/131 题意:给出一个字符串,第i个字符对应的值为a[i], 对于i∈[0,n),求最长公共前缀大于等于i的字串对个数,并求这些字符串对开头对应值相乘最大值。n=3*10^5 题解: 学了个厉害的东西啊。。。 正解好像是sa+并查集(合并heig 阅读全文
posted @ 2016-10-03 15:27 拦路雨偏似雪花 阅读(537) 评论(0) 推荐(1)
摘要:题意:求长度为1到n的相同子串出现的次数,输到小于2为止。 题解: 用sam做。 建机,算right集合,然后用r[i]更新长度为step[i]的子串出现次数,然后ans[i]=maxx(ans[i],ans[i+1])(长度更长的出现次数一定小于等于长度更短的。) 阅读全文
posted @ 2016-10-03 09:55 拦路雨偏似雪花 阅读(337) 评论(0) 推荐(0)
摘要:题意: 给出两个串,问这两个串的所有的子串中(重复出现的,只要是位置不同就算两个子串),长度大于等于k的公共子串有多少个。 题解: 这题好像大神们都用后缀数组做。。然而我在sam的题表上看到这题,做了一百年才做出来。。还看了题解好吗。。 先对第一个串构造 SAM,逆拓扑序求出right存入r[]。 阅读全文
posted @ 2016-09-05 20:54 拦路雨偏似雪花 阅读(465) 评论(0) 推荐(0)
摘要:题意:给出n个数字,数字很长,用字符串读入,长度总和为10^5。求这n个字符串的所有子串(不重复)的和取模2012 。 例如字符串101,和就是1+10+101=112。 题解: 就是求不同的子串连成一个数。sam的拓扑序真的很有用!按拓扑序可以保证能转移到当前x的节点都在之前被更新了。每个节点x维 阅读全文
posted @ 2016-09-04 21:05 拦路雨偏似雪花 阅读(326) 评论(0) 推荐(0)
摘要:http://acm.hust.edu.cn/vjudge/problem/28005 题意:给一个字符串S,令F(x)表示S的所有长度为x的子串中,出现次数的最大值。求F(1)..F(Length(S)) 。 题解: 关键问题在于统计某个串出现了多少次。 在后缀自动机中,答案即为包含了这个串的状态 阅读全文
posted @ 2016-09-04 20:53 拦路雨偏似雪花 阅读(967) 评论(0) 推荐(0)
摘要:spoj1811 给两个长度小于100000的字符串 A 和 B,求出他们的最长公共连续子串。 先将串 A 构造为 SAM ,然后用 B 按如下规则去跑自动机。用一个变量 lcs 记录当前的最长公共子串,初始化为0。设当前状态结点为 p,要匹配的字符为 c,若 go[c] 中有边,说明能够转移状态, 阅读全文
posted @ 2016-09-03 08:48 拦路雨偏似雪花 阅读(419) 评论(0) 推荐(0)
摘要:题意:给定一棵树,每个节点有一个颜色,问树上有多少种子串(定义子串为某两个点上的路径),保证叶子节点数<=20。n<=10^5 题解: 叶子节点小于等于20,考虑将每个叶子节点作为根把树给提起来形成一棵trie,然后定义这棵树的子串为从上到下的一个串(深度从浅到深)。 这样做我们可以发现每个子串必定 阅读全文
posted @ 2016-09-01 21:12 拦路雨偏似雪花 阅读(1214) 评论(0) 推荐(1)
摘要:原博客链接:http://blog.sina.com.cn/s/blog_70811e1a01014dkz.html 未授权,侵权删。 这篇写得真是太好了!!!看了好多都没看懂。。看了这篇就知道它怎么构造了。。当然我看了很久。。 红色的字是我把它标红的。蓝色的字是我写的。 星期五的时候,在网上看别人 阅读全文
posted @ 2016-08-29 15:34 拦路雨偏似雪花 阅读(279) 评论(0) 推荐(0)