随笔分类 -  字符串_SAM

摘要:【题目大意】 求两个字符串的最长公共子串。 【思路】 对第一个字符串建立后缀自动机,第二个字符串去匹配。cnt记录当前最长公共子串的长度,而ret记录答案。 p代表位置指针,初始在rt位置。 对于第二个字符串的某一位s[i],如果当前有s[i]孩子,则cnt+1,继续往后移动;否则沿着pre指针返回 阅读全文
posted @ 2016-08-06 11:52 iiyiyi 阅读(684) 评论(0) 推荐(0)
摘要:【题目大意】 求一个循环数列的最小表示法。 【思路】 最小表示法的正解:★ SAM乱搞,和前面的POJ那道一样。然而MLE了,当作学习一下map的用法^ ^ map的使用方法(来源:☆) 一、map的说明 1 头文件 #include <map> 2 定义 map<string, int> my_M 阅读全文
posted @ 2016-08-06 11:42 iiyiyi 阅读(242) 评论(0) 推荐(0)
摘要:【题目大意】 给出一个字符串,求第k大的子串。(输入1表示子串可重复,0表示不可重复) 【思路】 显然,k大子串是后缀自动机的经典题型,可以利用后缀自动机的性质来解决。对于字符串 [前铺1]"abcbc",我们可以画出它的后缀自动机,如下图: Pre树类似于AC自动机中的fail树,即将pre方向形 阅读全文
posted @ 2016-08-04 15:52 iiyiyi 阅读(767) 评论(1) 推荐(1)
摘要:【题目大意】 求一个循环数列的最小表示法。 【思路】 把原创复制一遍放在后面,建立SAM,从s按字典序开始跑长度L即可。 板子来源(作者见连接内):🌺 阅读全文
posted @ 2016-08-03 16:37 iiyiyi 阅读(194) 评论(0) 推荐(0)