题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1403 题意: 给出两个字符串, 求他们的最长公共子串 思路: 两个字符串的最长公共子串长度显然就是两个字符串的所有后缀中的最长公共前缀长度. 可以先用一个没有出现的字符(便于后面区分后缀是否属于相同字 ...
分类:
编程语言 时间:
2017-08-29 22:57:53
阅读次数:
206
有两个S,T串,扩展KMP求,每一个S串的后缀和T串的最长公共前缀长度。 详细介绍:https://wenku.baidu.com/view/8e9ebefb0242a8956bece4b3.html 简单介绍一下: 扩展KMP,通过先处理T串next数组,然后用同样的方法去处理S,T; 具体意义: ...
分类:
其他好文 时间:
2017-08-22 01:48:58
阅读次数:
157
acm.hdu.edu.cn/showproblem.php?pid=6153 【题意】 给定字符串A和B,求B的所有后缀在A中出现次数与其长度的乘积之和 A和B的长度最大为1e6 【思路】 把A和B同时反转,相当于求B的所有前缀在A中出现次数与其长度的乘积之和 换个角度,相当于A中每出现一个B的前 ...
分类:
其他好文 时间:
2017-08-20 19:55:24
阅读次数:
204
扩展KMP算法 什么是扩展KMP? 扩展kmp是求模式串和主串的每个后缀的最长公共前缀长度。扩展KMP算法是利用前面的已知条件降低多余匹配,达到缩短时间的算法。 扩展KMP算法目的是得到next数组和extend数组。next[ i ] 表示的是从自己的第i位開始。模式串T与自己匹配的字符个数。ex ...
分类:
编程语言 时间:
2017-08-19 16:54:39
阅读次数:
165
Description 给你一个字符集合,你从其中找出一些字符串出来. 希望你找出来的这些字符串的最长公共前缀*字符串的总个数最大化. 给你一个字符集合,你从其中找出一些字符串出来. 希望你找出来的这些字符串的最长公共前缀*字符串的总个数最大化. Input 第一行给出数字N.N在[2,100000 ...
分类:
其他好文 时间:
2017-08-12 10:13:48
阅读次数:
225
SPOJ Problem Set (classical) 694. Distinct Substrings Problem code: DISUBSTR Given a string, we need to find the total number of its distinct substrin ...
分类:
其他好文 时间:
2017-08-06 12:39:49
阅读次数:
182
Longest Common Prefix Write a function to find the longest common prefix string amongst an array of strings. 求最长公共前缀。 代码例如以下: class Solution { public: ...
分类:
其他好文 时间:
2017-07-30 12:37:55
阅读次数:
138
思路:枚举第一个字符串的位置,然后枚举最长公共前缀的长度,时间即会下降…… #pragma comment(linker, "/STACK:1024000000,1024000000") #include<iostream> #include<cstdio> #include<cstring> #i ...
分类:
其他好文 时间:
2017-07-23 18:20:00
阅读次数:
131
题目链接:https://vjudge.net/contest/70655#problem/C 后缀数组的又一神奇应用。不同子串的个数,实际上就是所有后缀的不同前缀的个数。 考虑所有的后缀按照rank排好了,我们现在已知height,也就是相邻的两个的最长公共前缀是多少。那么不同的子串个数怎么统计呢 ...
分类:
编程语言 时间:
2017-07-23 10:00:22
阅读次数:
172
后缀数组+st表+单调栈 这道题是差异的加强版 看起来和差异差不多,但是询问的位置是不连续的,那么我们让他们连续就行。 把每个位置赋成rank值,因为lcp[i]表示rank=i和i+1的最长公共前缀,然后st表处理出相邻两个rank的lcp值,然后和差异一样,单调栈处理最左端和最右端的区间,乘起来 ...
分类:
其他好文 时间:
2017-07-16 13:28:31
阅读次数:
125