摘要: 【题意】给定两个字符串S和T,求最长公共子串。len<=10^5。 【算法】后缀自动机 【题解】对字符串S建SAM,然后令串T在S上跑匹配。 这是自动机最原本的功能——匹配,就是串T在SAM(S)上走,不能匹配就沿失配边走,这样得到的是T上以每个字符结尾的子串中与S的最长公共子串,取Max即是答案。 阅读全文
posted @ 2017-12-26 16:42 ONION_CYC 阅读(146) 评论(0) 推荐(0) 编辑
摘要: 【题意】给定长度为n和m的两个字符串S和T,要求在字符串S中取出若干段拼成T(可重复取),求最小段数,n,m<=50000。 【算法】后缀自动机 || 后缀数组 【题解】对串S建SAM,然后在上面尽可能地匹配T,匹配几次得到T就是答案。 #include<cstdio> #include<cstri 阅读全文
posted @ 2017-12-26 15:46 ONION_CYC 阅读(274) 评论(0) 推荐(0) 编辑
摘要: 后缀自动机是用于识别子串的自动机。 学习推荐:陈立杰讲稿,本文记录重点部分和感性理解(论文语言比较严格)。 刷题推荐:[后缀自动机初探],题目都来自BZOJ。 【Right集合】 后缀自动机真正优于后缀树的方面在于:结合了有限状态自动机,从而实现了O(n)的时空复杂度。 trans(s,str)表示 阅读全文
posted @ 2017-12-26 10:33 ONION_CYC 阅读(2293) 评论(0) 推荐(0) 编辑