很早之前学的KMP就没用过,今天选拔赛做到一个基本裸的没打出来,上网又搜了一些资料看,打了个相对简单的板子。 这东西还是挺好用的,最近要专门训练一下字符串的题。 ...
分类:
其他好文 时间:
2018-12-26 23:01:43
阅读次数:
211
"题面" 就是让你——在字符串A中,如果字符串B是A的子串,那么就删除在A中第一个出现的B,然后拼接在一起,一直重复上述步骤直到B不再是A的子串 |A|$\le 10^6$ 思路: KMP+栈 1、由于是两个 字符串匹配 的问题,当然一下子就会想到 KMP 2、由于是 删去一段区间 ,很多人第一反应 ...
分类:
其他好文 时间:
2018-12-26 15:44:38
阅读次数:
120
KMP算法详细理解 从昨天开始看KMP算法到今天凌晨。。。。。 把一些知识点进行总结,其实KMP还是挺简单的(HHHHHH) 博客新地址: "https://miraitowa2.top/" 1:BF(暴力匹配)算法 假设现在我们面临这样一个问题:有一个文本串S,和一个模式串P,现在要查找P在S中的 ...
分类:
编程语言 时间:
2018-12-22 18:39:36
阅读次数:
175
字符串 KMP Fail 完了。 Suffix Automaton Right/Endpos Longest/Mx & Shortest/Mn 两个状态要么是包含关系,要么无交集。 求拓扑序等同于对 Mx 排序。 求 Right 集合大小:新加点时 ,拆出来的新点权值为零,拓扑排序之后 。 求 Ri ...
分类:
其他好文 时间:
2018-12-19 21:03:43
阅读次数:
112
KMP+TRIE C++ int val[1000100][31],tot; int tr[1000100]; int fail[1000100]; struct AC_Trie{ void clean(){ tot=0; memset(val,0,sizeof(val)); memset(tr,0 ...
分类:
编程语言 时间:
2018-12-19 19:39:03
阅读次数:
156
0.目录 1. "KMP 子串查找算法" 2. "KMP 算法的应用" 3. "小结" 1.KMP 子串查找算法 问题: 如何在目标字符串S中,查找是否存在子串P? 朴素解法: 朴素解法的一个优化线索: 示例: 伟大的发现: 匹配失败时的右移位数与子串本身相关,与目标串无关 移动位数 = 已匹配的字 ...
分类:
编程语言 时间:
2018-12-19 19:30:40
阅读次数:
183
KMP的Next数组:模式串的前缀与后缀的“相交”长度 KMP算法步骤: 1.先算next数组 2.若失配(此时模式串下标为j),利用Next数组求出失配后滑动的新位置 a.Next[j] \geq 0,则模式串右移 j-Next[j] 位 b.Next[j] = -1,则模式串右移 j+1 位 ...
分类:
编程语言 时间:
2018-12-16 21:45:07
阅读次数:
172
概述 KMP(Knuth Morris Pratt)算法是一种用来解决字符串匹配问题的算法,时间复杂度为O(n+m),主要思想是当模式串与主串发生失配时,不必从头开始匹配,而是滑动到已经匹配的部分 next数组 在KMP算法中,next数组用来存储一段子串最大相等前后缀的长度加1,例如长度为i+1的 ...
分类:
编程语言 时间:
2018-12-16 17:10:11
阅读次数:
166
(一)字符串题目的特点 ①广泛性 字符串可以看作字符类型的数组,与数组的排序、查找、调整有关 很多其他类型的题可看作字符串类型的题 ②需要掌握的概念 回文 子串(连续) 子序列(不连续) 前缀树(Trie树) 后缀树和后缀数组 匹配 字典序 ③需要掌握的操作 与数组有关的操作:增删改查 字符的替换 ...
分类:
编程语言 时间:
2018-12-15 11:58:08
阅读次数:
165
rt 明明能哈希为什么要KMP/AC自动机/后缀数组/后缀自动机/后缀树呢??????? 【XSY2361】LCP 给定串 S,m 组询问 (X, Y, L, R): 求 S[X:Y] 与 S[L:R] 的最长公共前缀. 1 #include<algorithm> 2 #include<iostre ...
分类:
其他好文 时间:
2018-12-14 13:01:33
阅读次数:
172