题目大意:
求出在文本串中第一个没出现的字典序最小的串。、
思路分析:
开始的时候 用后缀数组写,然后根据sa的有序性。你就可以知道哪个串没有出现了。
但是题目卡了倍增哦。。。
自习想一想的话,我们用 sa 数组,也就是想知道这个串有没有出现过,也就是判断重复,却浪费了 O (n * lg n)...
判断重复为什么没想到hash 。
把每一个长度的子串都hash 出来,用...
分类:
其他好文 时间:
2014-07-30 09:59:57
阅读次数:
208
对于概念去看白书或者论文吧(《后缀数组——处理字符串的有力工具》by:罗穗骞)这里放上模板,一些解释在注释里。#include #include #define for1(i,a,n) for(i=a;i=(n);--i)#define for4(i,a,n) for(i=a;i>(n);--i)#...
分类:
其他好文 时间:
2014-07-23 22:16:57
阅读次数:
308
题目大意:
求出这些DNA序列中的最长且字典序最小的公共子串。
思路分析:
二分长度的答案,去height中扫描这个长度是否满足,一旦满足就马上输出,这样就可以保证字典序最小了。
#include
#include
#include
#include
#define maxn 1005
using namespace std;
char str[maxn]...
分类:
其他好文 时间:
2014-07-22 22:39:12
阅读次数:
258
Common Substrings
Time Limit: 5000MS
Memory Limit: 65536K
Total Submissions: 7082
Accepted: 2355
Description
A substring of a string T is defined as:
T(i, k)=TiTi+...
分类:
其他好文 时间:
2014-07-22 14:27:08
阅读次数:
314
Maximum repetition substring
Time Limit: 1000MS
Memory Limit: 65536K
Total Submissions: 6638
Accepted: 2007
Description
The repetition number of a string is defined a...
分类:
其他好文 时间:
2014-07-21 11:35:34
阅读次数:
244
#pragma warning (disable:4996)#include #include #include #include #include #include #include #include #include using namespace std;#define ll long lon...
分类:
其他好文 时间:
2014-07-16 12:39:50
阅读次数:
228
问题套了一个斐波那契数,归根结底就是要求对于所有后缀s[i...n-1],所有前缀在其中出现的总次数。我一开始做的时候想了好久,后来看了别人的解法才恍然大悟。对于一个后缀来说 s[i...n-1]来说,所有与它匹配的前缀必然是和 s[i+1...n-1] s[i+2...n-1] ....s[n-1...
分类:
其他好文 时间:
2014-07-13 21:50:25
阅读次数:
235
题目大意:
求一个子串,子串既是前缀又是后缀。
然后再求出它在整个串中出现的次数。
思路分析:
可以很容易想到如何判断一个串既是前缀又是后缀。
只需要它与 sa【0】 的lcp 等于 整个串的长度减去它的 sa 值。
然后接下来的工作是判断出现了 多少次。
首先我们想到,如果这个子串是目标前后缀。
那么出现过它的子串在sa 中的下标一定比这个串大。
因为它已经是最简的了。...
分类:
其他好文 时间:
2014-07-10 23:54:55
阅读次数:
505
题解转自:http://blog.csdn.net/dyx404514/article/details/8807440
2012杭州网络赛的一道题,后缀数组后缀自动机都行吧。
题目大意:给一个字符串S和一系列字符串T1~Tn,问在S中有多少个不同子串满足它不是T1~Tn中任意一个字符串的子串。
思路:我们先构造S的后缀自动机,然后将每一个Ti在S的SAM上做匹配,类...
分类:
其他好文 时间:
2014-07-08 20:27:04
阅读次数:
288
题目大意:
求出字典序最小,重复次数最多,的子串。
思路分析:
RMQ + height 数组可以求出任意两个后缀的lcp
我们枚举答案字符串的重复的长度。
如果这个字符串的长度为 l ,而且这个字符串出现过两次或两次以上
那么你会发现在原串中 str[0] str[l] str[2*l] ....肯定有相邻的两个被包含在重复的串中。
我们求出这两个相邻的后缀的lcp
我...
分类:
其他好文 时间:
2014-07-05 23:47:48
阅读次数:
178