题目链接:https://cn.vjudge.net/contest/283743#problem/B 题目大意:给你n个字符串,然后问你将这位n个字符串任意两两组合,然后问你这所有的n*n种情况中,是回文串的有多少个? 题目大意:学到了一个很骚气的存储多个零散字符串的方法,因为有可能个给你很多零散的字符串,我们可以将这些字符串
虚树 后缀数组 \(Link-Cut-Tree\) \(manacher\)算法 周末把上述所有板子再敲一遍 上面的知识点因为学的仓促没写多少题目,以后要慢慢补题。
背景 该算法用于求字符串的最长回文子串长度。 参考文章 最长回文子串——Manacher 算法,该文浅显易懂,重点推荐Manacher’s Algorithm,该文包含几种情况的证明,可深入了解
题目描述 顺序和逆序读起来完全一样的串叫做回文串。比如acbca是回文串,而abc不是(abc的顺序为“abc”,逆序为“cba”,不相同)。输入长度为n的串S,求S的最长双回文子串T,即可将T分为两部分X,Y,(|X|,|Y|≥1)且X和Y都是回文串。 输入 一行由小写英文字母组成的字符串S。 输出 一行一个整数
最长回文 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 32452 Accepted Submission(s): 11908 Problem Description 给出一个只由小写英文字符a,b,c...y,z组成的字符串S,求S中最长回文串的长度. 回文就是正反读都是一
暂时有两种解法: 1.SA+manacher 考虑到本质不同回文串最多O(n)个 每找到一个,就看它出现多少次,SA数组往两边二分即可 简单粗暴 2.SAM+manacher 就是用SAM来找S[l,r]出现次数 倍增到所在right集合即可。 (回文树,回文自动机,不会告辞)