首页 > 其他分享 >回文自动机小记

回文自动机小记

时间:2024-08-25 15:38:40浏览次数:3  
标签:后缀 len 出边 fail 自动机 小记 回文

构建

口胡一下过程:

  • \(fail\) 边指向自己的最长回文后缀(偶根指向奇根)。

  • 定理:每添加一个字符,至多新增一个新的本质不同的回文串,且是所有 回后缀中最长的。

    由此得出推论:本质不同的回文子串(回文自动机的点数)不超过 |S|

  • 暴力跳终止链,找到第一个左侧有 \(x\) 的回文后缀 \(v\)。

    维护转移边,若 \(v\) 已经有 \(x\) 出边,找到该节点 \(d\),本次终止链末尾即为 \(d\)。否则,新建一个点 \(u\),且 \(len_u=len_v+2\)。

    维护 \(fail\) 边,找到下一个旧的回文后缀 \(v'\) 满足左边有一个 \(x\),此时必有 \(x\) 出边,找到该节点 \(u'\),则 \(fail_u=u'\)。

  • 时间复杂度均摊 \(\mathcal{O}(n)\)。

标签:后缀,len,出边,fail,自动机,小记,回文
From: https://www.cnblogs.com/xishanmeigao/p/18379005

相关文章

  • AC 自动机 学习笔记
    前言本来时今年寒假学的,当时回家比较早没学完也没学明白,打模拟赛却多次用到,所以重学一下。原理与定义即字典树(trie树)加\(fail\)指针,\(fail\)指针等同于kmp的\(next\)数组,匹配前缀的最长后缀,\(fail\)指针单独拎出来构成一颗失配树(fail树)。插入同trie树,全部插完后......
  • 2024/08/25小记
    给你看看AI实力:问题:如果世界毁灭了人类应该怎么做?(科幻领域)Ai回答:如果世界末日来临,人类应该采取以下措施:紧急行动:疏散到安全地带:识别高点、避难所或其他受保护的区域,并立即疏散。储备基本必需品:搜集足够的食物、水、药品、毯子和其他生存必需品。保持沟通:用电池供电的收音......
  • P10902 [蓝桥杯 2024 省 C] 回文数组
    P10902[蓝桥杯2024省C]回文数组题解十年OI一场空,不开longlong见祖宗!思路:贪心题目要求将一个随机数组变成一串回文数,可执行的操作如下:相邻两个数同时加\(1\)单个数加\(1\)或减\(1\)由于一个数加\(1\)得到回文数和一个数减\(1\)得到回文数效果一样,我们可以不......
  • 第五题:最长回文子串(Longest Palindromic Substring)
    题目描述:给定一个字符串 s,找到 s 中最长的回文子串。示例:输入:s="babad"输出:"bab" 或 "aba"输入:s="cbbd"输出:"bb"要求: 你需要找出 s 中的最长回文子串。解题思路方法1:中心扩展法回文字符串的特点是对称的,因此我们可以从每个字符(或字符间隙)作为中心,向两......
  • 半回文串(dp套dp)
    第4题   半回文串 查看测评数据信息给定一个长度为n的只含小写英文字母的字符串S和一个整数k,请你将S分成k个子字符串,使得每个子字符串变成半回文串需要修改的字符数目最少。请你返回一个整数,表示需要修改的最少字符数目。下面定义什么事半回文串:如果一个字符串从左往右......
  • 程序设计语言基础-有限自动机+正规式
    不确定的有限自动机NFA该状态机在任何一个状态,基于输入的字符都不能做成一个确定的状态转换,这里分为两种状况。对于一个输入,它有两个状态可以转换。存在ε的情况,即没有任何字符输入的情况下,NFA可以从一个状态迁移到另一个状态。确定的有限自动机DFA该状态机在任何一个状......
  • AC 自动机查漏补缺
    AC自动机查漏补缺前言今年1月份学过一次,当时自以为掌握得很好,实际上就是依托答辩。而且还有很多地方是有严重误导性的。所以这篇查漏补缺就是记录一下自己对AC自动机尚不完全掌握的地方。并对之前的那篇不太正确的题解进行纠正。因此,在这样的背景下,这篇文章注定就不是给初......
  • 【题库】—— USACO1.5 回文质数 Prime Palindromes
    #include<bits/stdc++.h>usingnamespacestd;boolprime(intn)//处理素数//bool的取值只有true和false两种//非零值被转为true,零被转为false{if(n<=1) returnfalse;for(inti=2;i<=sqrt(n);i++) if(n%i==0)returnfalse;//阻止提交 //ret......
  • 面试+算法之回文(Java):验证回文串、回文数、最长回文子串、回文链表、分割成回文串、
    概述算法是一个程序员的核心竞争力,也是面试最重要的考查环节。本文整理一些与回文相关的基础算法题。注:本文语言为Java。验证回文串如果在将所有大写字符转换为小写字符、并移除所有非字母数字字符之后,短语正着读和反着读都一样。则可以认为该短语是一个回文串。给定一个字符......
  • leetcode面试经典150题-125. 验证回文串
    https://leetcode.cn/problems/valid-palindrome/description/?envType=study-plan-v2&envId=top-interview-150 packageleetcode150import("strings""testing")funcTestIsPalindrome(t*testing.T){s:="0P"......