随笔分类 - 字符串——KMP
摘要:HDU5763 Another Meaning Mean 给定两个字符串$A,B$,$B$会有两种表示意思,询问$A$最终有多少种表达方式。 \(T <= 30,|A| <= 100000,|B| <= |A|\) Sol \(KMP+DP\). 先做一遍$B$串的$Next$,把$A$中所有出现$
阅读全文
摘要:CF535D Tavas and Malekas Mean 文本串长度为 \(n\),给你模式串在文本串中出现的 \(m\) 个位置(必须在这些位置有出现过,也可以在其他位置出现),求可能的文本串数量。 Sol \(KMP\) 首先,最后答案一定与空位置的数目$cnt$相关,观察发现是$26^{cn
阅读全文
摘要:CF631D Messenger Mean 给你两个字符串$s,t$,求出$t$在$s$中出现了多少次。 这两个字符串可能会很长,所以字符串被分成很多块,其中$s$被分成$n$块,$t$被分成$m$块。每一块$(l,c)$代表$l$个$c$字符连接在一起组成的字符串。即$(2,′a′)="aa"$。
阅读全文
摘要:POI 2006 OKR-Periods of Words Solution: Wating... Code: #include<bits/stdc++.h> using namespace std; const int N=1000005; int n; char s[N]; int Next[N
阅读全文
摘要:NOI 2014 动物园 Solution: $Kmp$的性质考察。 1.将i所包含的所有前缀次数通过递推统计出来,仔细观察会有$50$分暴力跳$Next$的做法,跳到第一个$pos*2<=i$即可,但是理论复杂度过不去。 2.考虑先将i所包含的所有前缀次数通过递推统计出来,再做一遍求$Next$数
阅读全文
摘要:学习链接 时间复杂度证明: 设$for$循环中串长为$m$,$j$最多加$m$次,while循环中保证$j>=0$,那么$j$在while中最多跳$m$次。 所以单次的KMP的主过程,复杂度为$O(2m)$,总复杂度为$O(2n+2m) = O(n+m)$ \(\rule[0pt]{38.3cm}{
阅读全文

浙公网安备 33010602011771号