数据结构-串
leoxry
天道酬勤,拼搏一个最好的自己送给未来的自己,每天开开心心敲代码就是一种幸福,不计得失,回归刚开始学习时内心的单纯
展开
-
【模板练习——AC自动机】Keywords Search HDU - 2222
Think: 1题意:询问在目标串中出现几个模式串Keywords Search HDU - 2222 In the modern time, Search engine came into the life of everybody like Google, Baidu, etc. Wiskey also wants to bring this feature to his image原创 2017-09-18 11:51:39 · 684 阅读 · 0 评论 -
【kmp】Corporate Identity HDU - 2328
Think: 1知识点:kmp算法+暴力枚举 2题意:输入一组字符串,寻找最长公共子串,长度相同时选择字典序最小的 3解题思路: (1):找到字符串组中长度最短的字符串,然后根据左右区间枚举查询 (2):找到字符串组中长度最短的字符串,然后根据长度从大至小枚举,若在当前长度梯度已经找到串,则结束枚举(因为从大至小枚举的长度梯度级,因此下面枚举的长度梯度级要小于当前已经枚举完成的长度梯度级)原创 2017-10-11 19:30:00 · 369 阅读 · 0 评论 -
【kmp算法next数组-串的最小循环节/循环周期】Period HDU - 1358
Think: 1知识点:通过kmp算法的next数组求解串的最小循环节和循环周期 2题意:一个长为N (2 <= N <= 1 000 000) 的字符串,询问前缀串长度为k(k > 1)的串是否是一个周期串,即k = A…A;若是则按k从小到大的顺序输出k和周期数 3解题知识点: (1):一个串的最小循环节长度:len - next[len] (2):若len%(len-next[len原创 2017-10-06 16:54:49 · 928 阅读 · 0 评论 -
【kmp算法—最小循环节】Cyclic Nacklace HDU - 3746
Think: 1知识点:kmp算法—最小循环节 2题意:输入一个原始字符串,选择在头部或者尾部添加别的字符,使得新的字符串为一个周期循环字符串,询问最小需要添加几个字符 3题意分析:求最小循环节 (1):最小循环节:cir_len = len - next[len-1] (2):如果cir_len != len && len%cir_len == 0则不需要再添加,除此之外,添加的字符数为原创 2017-10-06 11:36:12 · 524 阅读 · 0 评论 -
【kmp算法】Substrings HDU - 1238
Think: 1知识点:kmp算法 2题意:T组测试数据,每组测试数据输入n个字符串,询问最长长度的子串x,要求子串x或者子串x的翻转串在每个字符串中都会出现 3思路:找到最小的字符串,然后暴力枚举子串查询,剪枝优化 4反思: (1):字符串长度为1的字符串不要忘记vjudge题目链接以下为Wrong Answer代码——未枚举字符串长度为1的字符串#include <cstdio>#i原创 2017-10-11 15:29:00 · 395 阅读 · 0 评论 -
【kmp算法next数组应用】Simpsons’ Hidden Talents HDU - 2594
Think: 1知识点:kmp算法next数组应用 2题意:输入两个串,询问“最长前后缀”,“最长前后缀”定义为:串ans为st1的前缀,st2的后缀,输出“最长前后缀”和“最长前后缀”的长度 3解题思路:连接串st1和st2,求next数组,next[len-1]表示串st的最大公共前后缀,需要判断len与len_st1和len_st2的长度,若len > len_st1 或 len > l原创 2017-10-07 19:01:10 · 346 阅读 · 0 评论 -
【kmp算法-子串暴力匹配+字符串地址传入】Blue Jeans POJ - 3080
Think: 1知识点:kmp算法+子串暴力匹配 2题意:输入n(2<=n<=10)个字符串集合(len == 60),询问n个字符串的最长公共子串,若长度相同,则输出字典序最小的 3解题思路:通过传入字符串地址和长度枚举第一个串的子串在其它串中是否可以匹配,更新维护最优解vjudge题目链接以下为Accepted代码#include <cstdio>#include <cstring>#原创 2017-10-06 21:36:44 · 363 阅读 · 0 评论 -
【kmp算法next数组求解公共前后缀】Seek the Name, Seek the Fame POJ - 2752
Think: 1知识点:通过kmp算法next数组求解公共前后缀 2题意:输入串s,输出所有的符合条件的子串的长度,符合条件:子串既是s的前缀又是s的后缀 3解题知识点: (1):前缀定义:从s的开始字符到s的任意字符为止 (2):后缀定义:从s的任意字符到s的最后字符为止 (3):next[i]定义:字符s[i]及其前面至多有next[i]个连续的字符和字符串s从初始位置开始的next原创 2017-10-06 20:30:06 · 695 阅读 · 0 评论 -
【KMP算法】The Dominator of Strings HDU - 6208
Think: 1题意:输入串的集合,判断是否存在一个串,使得集合内其它的串为这个串的子串,如果存在则输出这个串,否则输出No; 2思路:找到一个长度最长的串,其它串的长度小于等于这个串,然后多次KMP匹配 3注意: (1)每组测试数据的总长度不超过100000,即N和len的长度都可能达到100000,因此无法直接通过二维char数组存储,需要通过string存储 (2)输入数据量较大,建原创 2017-09-18 16:38:52 · 576 阅读 · 0 评论 -
【kmp算法】数据结构实验之串三:KMP应用
Think: 1知识点:kmp算法 2题意:先输入n,然后输入n个数字,再输入m,然后再输入m个数字,询问这m个数是否为n个数字的唯一子区间[l, r],若是,则存在子区间[l, r]则输出l, r,若不存在则输出-1 3反思: (1):区间[l, r]必须是唯一存在 (2):当第一次寻找到一个区间[l, r]之后再次寻找判断是否是唯一存在时,要注意再次寻找时的出发位置SDUT题目链接以下原创 2017-10-11 22:12:32 · 567 阅读 · 0 评论