随笔分类 -  字符串

摘要:题意:给2个数字序列 a 和 b ,问按从小到达排序后,a中的哪些子串与b的名次匹配。 a 的长度 N≤100,000,b的长度 M≤25,000,数字的大小 K≤25。 解法:【思考】1.X 暴力。枚举 a 中的子串,选出来排序后比对名次。O(n* m log m *m)=O(n*m^2*log 阅读全文
posted @ 2016-11-18 09:55 konjac蒟蒻 阅读(281) 评论(0) 推荐(0)
摘要:题意:求n个串的字典序最小的最长公共子串。 解法:枚举第一个串的子串,与剩下的n-1个串KMP匹配,判断是否有这样的公共子串。从大长度开始枚举,找到了就break挺快的。而且KMP的作用就是匹配子串,近乎O(n)的速度,很快。 P.S.对于字符串要仔细!!! 阅读全文
posted @ 2016-11-17 22:28 konjac蒟蒻 阅读(183) 评论(0) 推荐(0)
摘要:题意:给定一个由字符组成的矩阵,求出它的面积最小的覆盖矩阵。(感觉应该是可重叠的......* (・ω・)っ) 解法:KMP。行列互不影响,可以问题分解。先求出每一行的最小重复串,利用kmp中的next[ ]数组,然后求其最小公倍数。若变成最大值就可以break了,这也是我代码本来应该O(2*m*n 阅读全文
posted @ 2016-11-17 21:16 konjac蒟蒻 阅读(212) 评论(0) 推荐(0)
摘要:题意:求子串在文本串中出现了多少次。 解法:使用KMP的next[ ]和tend[ ]数组计数。 阅读全文
posted @ 2016-11-17 19:38 konjac蒟蒻 阅读(248) 评论(0) 推荐(0)
摘要:题意:给出一个字符串str,求出str中存在多少子串,使得这些子串既是str的前缀,又是str的后缀。从小到大依次输出这些子串的长度。 解法:利用KMP中next[ ]数组的性质,依次找到前缀、后缀匹配的字符串。 阅读全文
posted @ 2016-11-17 19:31 konjac蒟蒻 阅读(152) 评论(0) 推荐(0)
摘要:题意:给你一个字符串,求这个字符串到第 i 个字符为止的重复子串的个数。 解法:判断重复子串的语句很重要!!if (p && i%(i-p)==0) printf("%d %d\n",i,i/(i-p)); 我之前一直不是很理解,而实际上多枚举几种情况就好了。若是重复的,那么next[i]肯定是最大 阅读全文
posted @ 2016-11-17 16:42 konjac蒟蒻 阅读(252) 评论(0) 推荐(0)