随笔分类 - 字符串算法 -- 回文树
摘要:【HDU5421】Victor and String(回文树) 题面 "Vjudge" 大意: 你需要支持以下操作: 动态在前端插入一个字符 动态在后端插入一个字符 回答当前本质不同的回文串个数 回答当前回文串个数 题解 回文树前端插入的操作,学一学感觉并不难? 额外维护一下一个前端插入的$last
阅读全文
摘要:【Aizu2292】Common Palindromes(回文树) 题面 "Vjudge" ~~神TMD日语~~ 翻译: 给定两个字符串,询问这样的四元组个数 满足都是回文串并且 题解 自己一下就会做
阅读全文
摘要:【CodeChef】Palindromeness(回文树) 题面 "Vjudge" "CodeChef" "中文版题面" 题解 构建回文树,现在的问题就是要求出当前回文串节点的长度的一半的那个回文串所代表的节点 定义表示长度最长并且长度小于等于当前节点长度一半的回文串所代表的节点 $ha
阅读全文
摘要:【CF245H】Queries for Number of Palindromes(回文树) 题面 "洛谷" 题解 回文树,很类似原来一道后缀自动机的题目 "后缀自动机那道题" 看到的范围很小,但是很多 所以提前预处理出每一段的答案 时间复杂度 cp
阅读全文
摘要:【CF17E】Palisection(回文树) 题面 "洛谷" 题解 题意: 求有重叠部分的回文子串对的数量 所谓正难则反 求出所有不重叠的即可 求出以一个位置结束的回文串的数量 和以一个位置为开始的回文串的数量 然后对应的乘一下就行了 求法我用的是回文树 维护每个节点到根节点的距离, 就是回文后缀
阅读全文
摘要:【SPOJ】NUMOFPAL Number of Palindromes(Manacher,回文树) 题面 "洛谷" 求一个串中包含几个回文串 题解 Manacher傻逼题 只是用回文树写写而已。。 cpp include include include include include includ
阅读全文
摘要:【BZOJ2160】拉拉队排练(回文树) 题面 "BZOJ" 题解 看着题目, 直接构建回文树 求出每个回文串的出现次数 直接按照长度一下就行了 然后快速幂算一下答案就出来了 这题貌似可以用Manacher做吧 求出以每个字符为中心的回文串的最大长度 然后搞一下前缀和就行了 cpp in
阅读全文
摘要:【CF932G】Palindrome Partition(回文树,动态规划) 题面 "CF" 翻译: 给定一个串,把串分为偶数段 假设分为了 求,满足的方案数 题解 反正我是不会做 基本就是照着的打了
阅读全文
摘要:【BZOJ2342】双倍回文(回文树) 题面 "BZOJ" 题解 构建出回文树之后 在树上进行 如果一个点代表的回文串长度为的倍数 并且存在长度为它的一半的回文后缀 那么就是可行的 如何维护长度是一半的回文后缀? 树上的父亲一定包括了它的所有的回文后缀 因此在$
阅读全文
摘要:【BZOJ2565】最长双回文串(回文树) 题面 "BZOJ" 题解 枚举断点 显然的,我们要求的就是以结尾的最长回文后缀的长度 再加上以开头的最长回文前缀的长度 至于最长回文前缀怎么求? 把串反过来前缀不就变成后缀了吗? 所以构造两个回文树就好啦 cpp include in
阅读全文