![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
字符串
文章平均质量分 81
流苏贺风
这个作者很懒,什么都没留下…
展开
-
回文自动机
回文自动机一,定义二,状态概述三,引理四,具体理论例题1,P3649 [APIO2014] 回文串特别鸣谢:翁文涛 – 2017 国家候选队论文《回文树及其应用 》特别鸣谢:bzt的题解一,定义PAM 是一个接受且仅接受某个字符串的所有回文子串的中心及右半部分的 DFA。保证回文串为奇回文串,如果不是需要构造,如此PAM就是一颗自动机而非分裂的子树这是一颗成品 PAM ~ 看起来不那么离散嘛二,状态概述PAM 的每个状态都表示一个回文子串,其中包含两个特殊状态, 长度 为 0 和原创 2022-01-30 11:08:13 · 1693 阅读 · 0 评论 -
后缀平衡树
后缀平衡树一,定义一,定义集合内容:字符串 S 的所有后缀节点意义:字符串的每一个后缀原创 2022-01-30 00:34:40 · 386 阅读 · 0 评论 -
最小表示法和manacher算法
最小表示法和manacher算法一,最小表示法一,最小表示法字符串的循环同构:表示把字符串的左边第一位移到最后一位,新串再进行这样的操作,得到的一些字符串都是原串的循环同构最小表示:这些循环同构中字典序最小的破环法:这个双指针可以做到 O(n)O(n)O(n)分类:1,s[i+k]>s[j+k]s[i+k]>s[j+k]s[i+k]>s[j+k]:iii 开头的不是最小表示,并且 [i,i+k][i,i+k][i,i+k] 中开头的长度为 nnn 的串也不是易证:此时可以原创 2022-01-28 18:04:45 · 744 阅读 · 0 评论 -
AC 自动机和字典树
AC 自动机三,AC 自动机1,二次认识 KMP2,二次认识失配数组3,二次认识匹配过程4,多模匹配的典例step 1,建立失配边DAG,并对主串匹配step 2 深搜,进行食物链计数累计获得匹配数目的奥秘三,AC 自动机AC 自动机入门AC 自动机进阶符合我的码风的讲解(实操性比较好)AC自动机= Trie + KMP ,可优化为Trie图KMP : O(n) 求出某一个单词 出现在哪些地方 出现次数AC自动机 : O(n) 求出每一个单词 出现在哪些地方 出现次数故AC自动机是在 K原创 2022-01-28 11:42:50 · 453 阅读 · 0 评论 -
后缀自动机基础
文章目录引入:二,自动机思维1,SAM结点的具体信息2,SAM图的特点引入:一、SAM的性质:SAM是个状态机。一个起点,若干终点。原串的所有子串和从SAM起点开始的所有路径一一对应,不重不漏。所以终点就是包含后缀的点。每个点包含若干子串,每个子串都一一对应一条从起点到该点的路径。且这些子串一定是里面最长子串的连续后缀。SAM问题中经常考虑两种边:(1) 普通边,类似于Trie。表示在某个状态所表示的所有子串的后面添加一个字符。(2) Link、Father。表示将某个状态所表示的最短子串的首原创 2022-01-26 17:50:11 · 1099 阅读 · 0 评论 -
后缀数组从入门到省选
后缀数组从入门到省选一,SA 后缀数组二,LCP 最长公共前缀三,习题1,P4248 【[AHOI2013]差异】1,后缀 SA 的讲解2,LCP 的讲解一,SA 后缀数组后缀数组 sa[i]:表示所有后缀在排完序后,排名为i的后缀在原串中的位置。名次数组rank[i]:表示所有后缀在排序完后,原字符串中第 i 名现在的排名。基于倍增排序之后,直接转化为双关键词基数排序解释:双关键词在缀二,LCP 最长公共前缀三,习题1,P4248 【[AHOI2013]差异】粉兔的讲解求解很多原创 2022-01-26 11:02:57 · 368 阅读 · 0 评论 -
单模匹配:KMP与扩展KMP
字符串基础算法一,KMP 匹配朴素思考标准思考代码实现二,trie 字典树三,AC 自动机一,KMP 匹配题面:所谓字符串匹配,是这样一种问题:“字符串 P 是否为字符串 S 的子串?如果是,它出现在 S 的哪些位置?”约定:其中 S 称为主串;P 称为模式串朴素思考枚举每个S中长度为strlen(P)strlen(P)strlen(P)的子串,直接判断字符串相等在这个过程中,可能直到 len(P)−1len(P)-1len(P)−1 位的时候,串子还是匹配的,不过在最后一位失败了,那么下一次还原创 2021-10-07 21:40:53 · 248 阅读 · 0 评论 -
字符串基础
字符串类型格式总结(亲测有效,save time!!)1.scanf和printf的使用此类型只能用于字符数组的输入输出,格式为:char a[1000];scanf("%s",a);printf("s",a); 特点:printf遇到空格字符不会停止,scanf则会停2.puts和gets此类型只能用于字符数组的输入输出,格式为:char b[100];gets(b);//输入puts(b);//输出特点:puts和gets遇到空格字符不会停止3.string动态字符处理.原创 2022-01-28 09:17:25 · 466 阅读 · 0 评论