https://loj.ac/problem/10048 题目描述 给出两个字符串S和T,要求不断从S中删除T,删除T后空缺为补齐,求删完后的字符串。 思路 单字符串匹配,显然我们可以用KMP。先跑一遍KMP的板子,预处理匹配串。接下来就是匹配,由于可能会存在补齐空位后出现的匹配串,而多次扫描不知道 ...
分类:
其他好文 时间:
2019-10-04 23:01:19
阅读次数:
143
https://loj.ac/problem/10045 题目描述 给出一个字符串,求最短循环节长度。 思路 KMP求最短循环节,跑一遍KMP即可。具体关于这个最短循环节的结论见Power Strings ...
分类:
其他好文 时间:
2019-10-04 22:46:51
阅读次数:
113
https://loj.ac/problem/10035 题目描述 给出一个字符串,求它的最小循环节。 思路 之前讲过Hash的做法,不过这也是KMP的模板题。 我们有结论:若n%(n - p [ n ])==0,最小循环节长度为n/(n - p [ n ]);否则就为它本身。 我们对着证明考虑两部 ...
分类:
其他好文 时间:
2019-10-04 22:35:23
阅读次数:
101
https://loj.ac/problem/10043 题目描述 给出两个字符串A和B,求A最多同时分成几个互不重叠的B。 思路 单字符串的匹配问题,可以考虑用KMP解决,属于模板题。 首先来介绍一下KMP,KMP是单字符串的匹配算法,即只有一个母串和一个匹配串。在进行匹配时,如果暴力枚举,时间复 ...
分类:
其他好文 时间:
2019-10-04 20:47:31
阅读次数:
97
重点:理解next数组的含义,减少循环的时间。 ...
分类:
编程语言 时间:
2019-10-04 15:03:58
阅读次数:
84
字符串匹配算法简称kmp 日常安利大佬博客(真的是一篇很好的文章) 觉得百度百科讲的也挺好 就是给出两个字符串a, b 求b在a中的所有位置 next数组:代表当前字符之前的字符串中,有多大长度的相同前缀后缀(都指自己本身) 对于求next数组我们考虑b字符串自己匹配自己 例题 ...
分类:
编程语言 时间:
2019-10-04 09:37:21
阅读次数:
76
1.哈希算法、哈希表和KMP(Done) 2.平衡树Treap(Done) 3.悬线法优化DP:https://wenku.baidu.com/view/bc8311f69e314332396893f7.html(Done) 4.线段树的高级应用:节点维护邻接矩阵/区间取模计数/扫描线 线段树 5. ...
分类:
其他好文 时间:
2019-10-03 21:35:29
阅读次数:
102
https://loj.ac/problem/10035 题目描述 给出一个字符串,求它最多由多少个相同的字符串重复链接形成。 思路 其实题目就是要我们求出最小循环节的长度,再用字符串长度除以这个长度就是答案。求最小循环节显然用KMP就可以,但这里我们也可以用字符串Hash做。我们只需要暴力枚举每一 ...
分类:
其他好文 时间:
2019-10-03 12:35:44
阅读次数:
103
https://loj.ac/problem/10036 题目描述 给出一些字符串,求每个字符串既是前缀又是后缀的字串长度。 思路 显然这可以用KMP做,只要明确next数组的意思就行。不过一个更暴力的做法,直接字符串Hash,求每个前缀Hash值,再判断与它相同长度的后缀的Hash值是否相同,时间 ...
分类:
其他好文 时间:
2019-10-03 12:32:31
阅读次数:
74
https://loj.ac/problem/103 题目描述 给定一个字符串A和一个字符串B,求B在A中的出现次数。A和B中的字符均为英语大写字母或小写字母。 思路 显然这是道字符串匹配题我,我们可以用KMP求解。但这里我主要想介绍一种更简单的方法:字符串Hash。我们去一个基数b,把字符串看做b ...
分类:
其他好文 时间:
2019-10-02 23:09:59
阅读次数:
146