随笔分类 -  回文自动机&回文树

摘要:前(che)言(dan) 回文树,也叫回文自动机,是2014年被西伯利亚民族发明的(~~找不到百度百科,从一篇博客里蒯过来的~~) 作为解决回文问题的大杀器,回文自动机功能强大,实现技巧充满智慧。——dalao 一个性质 一个长度为N的字符串最多有N个不同的回文子串。 为什么? 我们考虑加入一个字符 阅读全文
posted @ 2019-03-16 20:13 Xu-daxia 阅读(2853) 评论(2) 推荐(5) 编辑
摘要:我们预处理出来以i为结尾的最长回文后缀(回文自动机的构建过程中就可以求出)然后就是一个区间覆盖,因为我懒得写贪心,就写了线段树优化的DP。 cpp include include include include include using namespace std; const int N=101 阅读全文
posted @ 2019-01-06 20:41 Xu-daxia 阅读(190) 评论(0) 推荐(0) 编辑
摘要:题意 给你一个由小写拉丁字母组成的字符串 s。我们定义 s 的一个子串的存在值为这个子串在 s 中出现的次数乘以这个子串的长度。 对于给你的这个字符串 s,求所有回文子串中的最大存在值。 |S|<=300000 题解 裸的回文树,我们在每一个节点结束的最长回文后缀上记录一个cnt代表出现次数。 这个 阅读全文
posted @ 2018-08-29 14:58 Xu-daxia 阅读(121) 评论(0) 推荐(0) 编辑
摘要:题意 给一个长度为N的字符串S。对于一个字符串AB,如果A和B都是回文串,那么称AB是一个双回文串。求问S最长双回文子串的长度?N <= 100000 题解 正反双向构造回文自动机,得到某一个点为结尾和开始的最长回文串长度,记为f[i],g[i]; 答案就是f[i]+g[i+1]的最大值。 阅读全文
posted @ 2018-08-29 10:47 Xu-daxia 阅读(220) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示