数据结构-KMP
lab104_yifan
这个作者很懒,什么都没留下…
展开
-
HDU 4749 Parade Show(KMP)
Parade ShowTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others)Total Submission(s): 921 Accepted Submission(s): 386Problem Description 2013 is th原创 2014-03-17 18:09:42 · 1065 阅读 · 0 评论 -
hdu 3374 String Problem (最小表示法+KMP)
链接:http://acm.hdu.edu.cn/showproblem.php?pid=33741 题目要求给定一个字符串求出最小和最大表示的rank和出现的times。利用最小/大表示法求出位置,然后利用KMP,next求出循环节,就能计算次数。代码:#include #include const int N = 1000005;int n, next[N];c原创 2014-03-19 22:58:35 · 735 阅读 · 0 评论 -
fzu 1901 Period II (KMP)
题目链接:http://acm.fzu.edu.cn/problem.php?pid=1901题目要求的找到所有满足S[i]=S[i+P] for i in [0..SIZE(S)-p-1]的前缀,并且长度为p。利用上面的式子可以等价的得到等式s[0,len-p-1] = s[p , len-1].思路:利用next数组的性质,从next[n]往前推即可。代码:#include原创 2014-03-19 23:00:54 · 847 阅读 · 0 评论 -
hdu 2609 How many(最小表示法)
链接:http://acm.hdu.edu.cn/showproblem.php?pid=2609题目要求的是给定n个字符串,找出不同的字符串的个数。由于题目说了,字符串可以进行变换,也就是如果两个字符串相同那么它们的最小表示是相同的。思路:利用最小表示法求出每个串,然后利用set记录去重,最后输出个数即可代码:#include #include const int N原创 2014-03-19 22:59:53 · 989 阅读 · 0 评论 -
HDU 4763 Theme Section(KMP)
Theme SectionTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 944 Accepted Submission(s): 503Problem DescriptionIt's time for原创 2014-03-19 23:14:06 · 1771 阅读 · 0 评论 -
poj 3080 Blue Jeans(KMP)
题目链接:http://poj.org/problem?id=3080思路:暴力+KMP,枚举第一个串每个位置作为开头,然后用KMP去求公共字串代码:#include #include #define INF 0x3f3f3f3fconst int N = 65;char s[15][N];int next[N], n, t;void get_next(char *s原创 2014-03-19 22:51:13 · 598 阅读 · 0 评论 -
UVA 11475 - Extend to Palindrome(KMP)
UVA 11475 - Extend to Palindrome题目链接题意:给定一个字符串,问需要补上最少的字符使他变成回文串思路:KMP,把字符串逆序和原串做匹配,匹配到最后一个字符看匹配了多少个,就是最大重合部分,然后相应输出即可代码:#include #include #include using namespace std;const i原创 2014-08-02 19:15:01 · 2604 阅读 · 0 评论 -
UVA 10298 - Power Strings(KMP)
UVA 10298 - Power Strings题目链接题意:本意其实就是,给定一个字符串,求出最小循环节需要几次循环出原字符串思路:利用KMP中next数组的性质,n - next[n]就是最小循环节,然后n / 循环节就是答案代码:#include #include const int N = 1000005;char str[N];int原创 2014-08-02 18:03:12 · 2340 阅读 · 0 评论 -
UVA 1328 - Period (KMP)
UVA 1328 - Period题目链接题意:给定一个字符串,求出有几个位置的前缀串是由个数大于1的串循环得到的,求出位置和循环次数思路:利用kmp的next数组的性质,i - next[i]就是循环长度,然后判断一下是不是正好是倍数即可代码:#include #include const int N = 1000005;int n, next[原创 2014-08-01 11:04:08 · 1669 阅读 · 0 评论 -
UVA 475 - Wild Thing(KMP)
UVA 475 - Wild Thing题目链接题意:给定一个带通配符的文件名作为格式,后面跟一个文件名,要求输出符合格式的文件名思路:先把带通配符的文件名根据星号位置进行分解,然后对于每个文件名去判断,判断的方法用KMP,如果格式的每段都能在文件名中不断往后一一匹配上,那么就是可以的,注意考虑开头和结尾没有星号的情况,还有这题就是如果找不到一个合适的,就什么都不输出,包括原创 2014-08-20 17:58:07 · 1007 阅读 · 0 评论 -
UVA 12012 - Detection of Extraterrestrial(KMP)
UVA 12012 - Detection of Extraterrestrial题目链接题意:给定一个字符串,求其所有子串中,对应1-n循环次数的最长串长度思路:KMP,n才1000,可以接受O(n^2)的算法,对于每个后缀串,做一次KMP,然后在遍历一遍KMP数组,这样就可以得到每个子串的所有循环次数了,然后不断更新答案即可代码:#include #i原创 2014-08-22 11:38:58 · 1175 阅读 · 0 评论 -
UVA 1358 - Generator(dp+高斯消元+KMP)
UVA 1358 - Generator题目链接题意:有m种字符(从'A'开始往后数的大写字母),现在有一个字符串,长度不超过12,现在每次随机生成一个字母,要求能产生该字符串的期望长度思路:dp[i]表示产生长度i的期望长度,那么每次产生一个字符,对应m种转移,每种转移的概率为1/m,转移后的长度可以利用KMP的next数组去快速获得,然后由于转移可能形成环的情况,所以无原创 2014-08-23 11:41:28 · 1299 阅读 · 0 评论 -
hdu 2328 Corporate Identity (KMP)
链接:http://acm.hdu.edu.cn/showproblem.php?pid=2328求公共字串,暴力+KMP代码:#include #include #define INF 0x3f3f3f3fconst int N = 205;char s[4005][N];int next[N], n, t;void get_next(char *seq, int原创 2014-03-19 22:56:57 · 670 阅读 · 0 评论 -
hdu 1238 Substrings(KMP)
链接:http://acm.hdu.edu.cn/showproblem.php?pid=1238求个公共字串,正逆序其中一个满足即可。KMP暴力即可。判断的时候正逆序都去判断即可代码:#include #include const int N = 105;#define max(a,b) ((a)>(b)?(a):(b))char s[N][N], rs[N][N];原创 2014-03-19 22:55:58 · 899 阅读 · 0 评论 -
HDU 1681 Oulipo(KMP)
OulipoTime Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 4023 Accepted Submission(s): 1591Problem DescriptionThe French author G原创 2014-03-18 12:44:28 · 714 阅读 · 0 评论 -
HDU 1711 Number Sequence(KMP)
Number SequenceTime Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 9548 Accepted Submission(s): 4370Problem DescriptionGiven two原创 2014-03-17 14:55:59 · 598 阅读 · 0 评论 -
HDU 2594 Simpsons’ Hidden Talents(KMP)
Simpsons’ Hidden TalentsTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 2417 Accepted Submission(s): 912Problem DescriptionHo原创 2014-03-18 21:50:06 · 546 阅读 · 0 评论 -
HDU 3746 Cyclic Nacklace(KMP)
Cyclic NacklaceTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 2213 Accepted Submission(s): 979Problem DescriptionCC always b原创 2014-03-18 13:19:25 · 623 阅读 · 0 评论 -
HDU 1358 Period(KMP)
PeriodTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 2435 Accepted Submission(s): 1205Problem DescriptionFor each prefix of原创 2014-03-18 17:03:32 · 559 阅读 · 0 评论 -
HDU 2087 剪花布条(KMP)
剪花布条Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 7610 Accepted Submission(s): 4996Problem Description一块花布条,里面有些图案,另有一块直接可用原创 2014-03-18 12:49:53 · 627 阅读 · 0 评论 -
HDU 2023 亲和串(KMP)
亲和串Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 6954 Accepted Submission(s): 3156Problem Description人随着岁数的增长是越大越聪明还是越大越笨,这原创 2014-03-18 17:14:36 · 612 阅读 · 0 评论 -
POJ Power Strings(KMP)
题目链接:http://poj.org/problem?id=2406KMP求最小循环节个数。最小循环节= n - next[n];代码:#include #include #define INF 0x3f3f3f3fconst int N = 1000005;char s[N];int next[N], n;void get_next(char *seq, int原创 2014-03-19 22:48:23 · 597 阅读 · 0 评论 -
POJ 2752 Seek the Name, Seek the Fame(KMP)
题目链接:http://poj.org/problem?id=2752求一个串的前缀后缀最长匹配串。利用next数组的性质从next[n]不断往前推即可代码:#include #include #define INF 0x3f3f3f3fconst int N = 400005;char s[N];int next[N], n, ans[N], ansn;void原创 2014-03-19 22:49:56 · 566 阅读 · 0 评论 -
hdu 3336 Count the string(KMP)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3336求每个前缀串的匹配次数,利用next数组的性质,对于每个位置往前一直推计算总和即可。代码:#include #include #define INF 0x3f3f3f3fconst int N = 200005;char s[N];int next[N], n, t, vi原创 2014-03-19 22:52:43 · 665 阅读 · 0 评论 -
hdu 4300 Clairewd’s message (KMP)
链接:http://acm.hdu.edu.cn/showproblem.php?pid=4300第一个串给定密文的翻译方式,然后去求一个暗文+明文正确格式的串。思路:保存一个翻译好的明文串,然后和暗文去匹配,从暗文的一半开始匹配,匹配到末看匹配了几个,n - 个数就是暗文/明文的长度代码:#include #include const int N = 100005;ch原创 2014-03-19 22:54:41 · 825 阅读 · 0 评论 -
UVA 11557 - Code Theft (KMP + HASH)
UVA 11557 - Code Theft题目链接题意:给定一些代码文本,然后在给定一个现有文本,找出这个现有文本和前面代码文本,重复连续行最多的这些文本思路:把每一行hash成一个值,然后对于每一个文本计算最大匹配值,枚举后缀,然后利用KMP去找即可代码:#include #include #include #include #include原创 2014-08-23 22:52:00 · 1334 阅读 · 0 评论