KMP
笑对这个世界的志贵
这个作者很懒,什么都没留下…
展开
-
数据结构实验之串一:KMP简单应用
数据结构实验之串一:KMP简单应用 Time Limit: 1000MS Memory Limit: 65536KB Problem Description 给定两个字符串string1和string2,判断string2是否为string1的子串。 Input 输入包含多组数据,每组测试数据包含两行,第一行代表string1(长度小于1000000),第二行代表string2(长度小于翻译 2017-02-14 17:26:28 · 304 阅读 · 0 评论 -
【KMP && 所有前缀,在原串出现次数(可重叠)和】HDU - 3336 Count the string
Step1 Problem: 给你字符串s, 求所有前缀,在原串出现次数(可重叠)和。Step2 Ideas: 个人习惯从0开始,next[0] = 0; next[i] : 代表下标从 0 到 i 这个子串,后缀 = 前缀 最长长度(不包括自身)。 枚举 i 从 0 到 len-1,对于每个 i 结尾的 所有后缀 = 前缀 的个数都求出来,然后求和。S...翻译 2018-06-20 11:27:11 · 489 阅读 · 0 评论 -
【KMP && 输出所有前缀=后缀的长度】POJ - 2752 Seek the Name, Seek the Fame
Step1 Problem: 给你字符串s, 输出所有前缀=后缀的长度(包括自身).Step2 Ideas: 个人习惯从0开始,next[0] = 0; next[i] : 代表下标从 0 到 i 这个子串,后缀 = 前缀 最长长度(不包括自身)。 下标 k 从 len-1 开始。 next[k] != 0, 长度为 next[k] 的后缀=前缀。 ...翻译 2018-06-20 11:10:37 · 182 阅读 · 0 评论 -
【KMP && 变成周期串至少加几个字符】HDU - 3746 Cyclic Nacklace
Step1 Problem: 给你一个字符串s, 问 s 变成周期串至少需要加几个字符。Step2 Ideas: 个人习惯从0开始,next[0] = 0; next[i] : 代表下标从 0 到 i 这个子串,后缀 = 前缀 最长长度(不包括自身)。 串的周期 T = len - next[len-1]; 1. T == len, 添加 len 个字符,...翻译 2018-06-20 11:00:19 · 196 阅读 · 0 评论 -
【KMP && S串在T串出现次数(不可重叠)】HDU - 2087 剪花布条
Step1 Problem: 给你字符串s1, s2. 求 s2 在 s1 中出现的次数,不可重叠。Step2 Ideas: 个人习惯从0开始,next[0] = 0; 求出s2的next[],s2匹配完后,核心:下标从0开始因为是不可重叠的。Step3 Code:#include<bits/stdc++.h>using namespace...翻译 2018-06-20 10:39:55 · 258 阅读 · 0 评论 -
【KMP && S串在T串中出现次数(可重叠)】HDU - 1686 Oulipo
Step1 Problem: 给你字符串s2, s1。 求s2在s1中出现的次数(可重叠)。Step2 Ideas: 个人习惯从0开始,next[0] = 0; 求出s2的next[],s2匹配完后,核心:下标移动到next[len-1],也就是前缀=后缀的最长长度,前缀的后一位的下标Step3 Code:#include<bits/stdc++.h...翻译 2018-06-20 10:36:15 · 408 阅读 · 0 评论 -
【字典树 && manacher && 两个串连接在一起判断回文】POJ - 3376 Finding Palindromes
Step1 Problem: 给你 n 个字符串,n 个字符串两两连接(n^2种连接方法),组成的所有字符串,有多少个回文串。Step2 Ideas: 核心:s1 串和 s2 串连接起来是回文,s1 和 s2 中较短的串,是长串反转后的前缀,长串前缀后面的字符构成回文. 字典树是放一堆字符串很好的结构,每个节点代表着其中一个字符串的前缀,我们需要O(1)处理,前缀后面剩...翻译 2018-06-21 12:06:46 · 311 阅读 · 1 评论 -
【前缀和 && (扩展KMP求前缀和后缀回文串长度 || manacher)】HDU - 3613 Best Reward
Step1 Problem: 给你 ‘a’ 到 ‘z’ 字符对应的价值,让你求把字符串分为两份后,对于每一份如果是回文串,就获取其价值,否则为0. 求讲字符串分成两份后的最大价值。Step2 Ideas: 枚举分割点,O(1)判断分割后的前缀和后缀是否是回文串,是的话O(1)求出价值。取最大。 O(1) 判断是否是回文,可以用扩展KMP 或者 manacher 先...翻译 2018-06-20 17:56:24 · 333 阅读 · 0 评论 -
【(KMP || 扩展KMP) && S串的每个后缀在T串中出现的次数】HDU 6153 A Secret
Problem Description 给你T组测试数据,每组测试数据,给你两个串,一个母串一个子串,让你求子串的所有后缀串,对于每个后缀串都和母串匹配,求出匹配次数,匹配次数*后缀串长度 求和 % 1000000007就是结果。Sample Input 2 aaaaa aa abababab abaSample Output 13 19Hint翻译 2017-08-21 09:16:51 · 356 阅读 · 0 评论 -
KMP 求最小循环节 POJ - 1961 Period
Problem Description 给你一个整数n,接下里有n个字符的字符串,到第i个字符的时候判断周期是否大于2,如果大于2同时是循环字符串,输出相应的长度,和循环了几次。Sample Input 3 aaa 12 aabaabaabaab 0Sample Output Test case #1 2 2翻译 2017-04-25 11:51:43 · 504 阅读 · 0 评论 -
UVa 455 Periodic Strings
Problem Description 如果一个字符串可以由某个长度为k的字符串重复多次得到,则称该串以k为周期。例如,abcabcabc以3为周期Sample Input 1 HoHoHoSample Output 2代码:#include<stdio.h>#include<string.h>int next[100];void get_next(char s[])/翻译 2017-04-24 17:54:07 · 242 阅读 · 0 评论 -
SDUT 3775 cyk追楠神系列三 典型的KMP类型题目
cyk追楠神系列三 Time Limit: 1000MS Memory Limit: 65536KB Problem Description 众所周知,cyk给楠神写了一封信表白。作为有一个有礼貌的五好青年,楠神当然得给 cyk 写一封回信咯,俗称“好人信”。 楠神是一个非常有文采的人,他在信里引用了很多名言来安慰 cyk,有时候他觉得一句话很好的话,他会引用很多次。现在他想考考翻译 2017-03-14 19:59:41 · 407 阅读 · 0 评论 -
【最小表示法 && 字符串去重】HDU - 2609 How many
Step1 Problem: 给你 n 个字符串环,问这 n 个字符串环,有多少个环是不同的。Step2 Ideas: 最小表示法推荐学习博客 任何一个字符串环,最小表示都是唯一的。求出 n 个字符串环的最小表示,然后求出去重后的个数(可以用set)。Step3 Code:#include<bits/stdc++.h>using namespac...翻译 2018-06-20 11:46:36 · 294 阅读 · 0 评论