
KMP
爱吃猫的鱼
这个作者很懒,什么都没留下…
展开
-
KMP算法
const int maxn=1e6+5;int nx[maxn];void getnx(char *x) { int i,j; int m=strlen(x); j=nx[0]=-1; i=0; while (i<m) { while ( -1!=j && x[i]!=x[j]) j=nx[j]; nx[++i]=++j; }}//输出多次出现...原创 2019-09-18 23:12:47 · 432 阅读 · 0 评论 -
HDU 3336 Count the string (KMP + 出现次数)
题目链接题意:给一个长度为n的字符串,求每个前缀在字符串中的出现次数的和,答案模10007。分析:kmp水题,按顺序遍历每个前缀,当前缀出现的次数为1,后面肯定都为1。#include <iostream>#include <cmath>#include <iomanip>#include <cstring>#include <v...原创 2020-04-05 21:08:40 · 190 阅读 · 0 评论 -
POJ 2752 Seek the Name, Seek the Fame (next数组)
题目链接题意:给定若干只含小写字母的字符串(这些字符串总长≤400000),在每个字符串中求出所有既是前缀又是后缀的子串长度。例如:ababcababababcabab,既是前缀又是后缀的子串:ab,abab,ababcabab,ababcababababcabab。分析:根据next数组的定义求解。注意串本身是一个,可以单独输出。#include <iostream>#in...原创 2020-03-29 22:39:37 · 242 阅读 · 0 评论 -
POJ 3080 Blue Jeans (KMP+暴力)
题目链接题意:Genographic项目是IBM与国家地理学会之间的研究合作伙伴关系,该合作伙伴正在分析数十万贡献者的DNA,以绘制地球的分布图。作为IBM研究人员,您的任务是编写一个程序,该程序将在给定的DNA片段之间找到共同点,这些片段可以与单个调查信息相关联以识别新的遗传标记。通过在分子中发现氮碱基的顺序列出DNA碱基序列,可以注意到DNA碱基序列。有四个碱基:腺嘌呤(A),胸腺嘧啶...原创 2020-03-29 22:08:37 · 177 阅读 · 0 评论 -
POJ 2406 Power Strings (KMP 循环节个数)
题目链接题意:问最小的循环节个数。分析:和循环节那题差不多,same=m-next[m]为最短循环节长度,如果正好除尽,输出 m/same,否则 都是 1#include <iostream>#include <cmath>#include <iomanip>#include <cstring>#include <vector&g...原创 2020-03-18 13:07:28 · 151 阅读 · 0 评论 -
HDU 1358 Period (KMP 循环节循环次数)
题目链接题意:给出一个字符串s,问在[0, i]区间是否有完整的循环节,若有,输出i并输出循环次数分析:跟这道题中求循环节一样,这次只要把 i 到 m 的区间全部跑一遍就行。注意不要用memset 不然会 T#include <iostream>#include <cmath>#include <iomanip>#include <cstri...原创 2020-03-18 11:50:29 · 171 阅读 · 0 评论 -
HDU 3746 Cyclic Nacklace (KMP 循环节)
题目链接题意:给定字符串,问最少添加多少个字符串能让其循环。分析:从KMP的next数组定义可以知道:next[i] : 满足 x[i-k…i-1]=x[0…k-1] 的最大 k 值(最长公共前后缀的长度)从这题看就是 已经相等的前后缀的长度, 那么 same=len - next [len] 最小循环节的长度。如果 nx[len] = 0 ,前面都没有相同前后缀,所以输出 len...原创 2020-03-18 11:24:24 · 218 阅读 · 0 评论 -
HDU 2087 剪花布条(KMP 出现次数 不可重叠)
题目链接题意:一块花布条,里面有些图案,另有一块直接可用的小饰条,里面也有一些图案。对于给定的花布条和小饰条,计算一下能从花布条中尽可能剪出几块小饰条来呢?分析:输出模式串在匹配串中出现的次数,不可重叠。#include <iostream>#include <cmath>#include <iomanip>#include <cstring&...原创 2020-03-18 10:33:28 · 192 阅读 · 0 评论 -
HDU 1686 Oulipo (KMP 出现次数 可重叠)
题目链接题意:输出模式串在匹配串中出现的次数,可以重叠。#include <iostream>#include <cmath>#include <iomanip>#include <cstring>#include <vector>#include <string>#include <map>#i...原创 2020-03-18 10:27:37 · 293 阅读 · 0 评论 -
HDU 1711 Number Sequence (KMP 第一次出现的位置)
题目连接题意:给定两个整数序列,输出一个模式序列在匹配序列第一次出现的位置。分析:kmp模版题#include <iostream>#include <cmath>#include <iomanip>#include <cstring>#include <vector>#include <string>#in...原创 2020-03-18 10:20:43 · 148 阅读 · 0 评论