Manacher
Manacher
ハルカナソラヘ
果てなく続いて行く、
生きとし生けるものは。
抗うことの出来ない、
散り行く因縁抱いて。
記憶の隙間で ただ微笑む瞳が 儚く零れた、
運命さえ 光で照らして行く。
闇を離した この手を繋ぐ、
穢れなき宵 咲き誇るように。
夢から覚めた 昨日の声を、
ずっと聞かせて 独り歩いて行く。
展开
-
20200901 专题:回文自动机
总览: 真·整个人都自动机了 因为有奇偶回文串,所以有两个根,奇根偶根 每一个节点代表一个回文串的后一半 维护 len,代表回文串的长度 维护 fail,类似 ACM,代表最长回文后缀 注意初始化 模板: const int A=5e5+5; char s[A]; int len; int tot=1,las=0;//总结点数,末字符所在回文串 struct PAM{ int ch[26]; int fail,len; }tr[A]; inline int find(int x,int w){ wh原创 2020-09-01 19:52:18 · 174 阅读 · 0 评论 -
20200806 专题:manacher
总览: O(n)O(n)O(n) 找回文串 Manacher算法本质上也是基于暴力匹配的方法,只不过做了一点简单的预处理,且在扩展时提供了加速 Manacher 对字符串的预处理: 在字符间添加符号,将偶回文串变成奇回文串 在字符串首尾添加字符,防止越界 基本概念: 回文半径和回文直径:回文半径是包括回文中心在内的回文子串的一半的长度,回文直径则是回文半径的 2 倍减 **1 。 最右回文边界:在遍历字符串时,每个字符遍历出的最长回文子串都会有个右边界,而R则是所有已知右边界中最靠右的位置,也就是说最右原创 2020-08-06 14:54:22 · 116 阅读 · 0 评论