摘要:
这个地址上的题解已经好详细了http://wenku.baidu.com/view/87f5b7f80242a8956bece4df.html不过本人觉得,加上这部分题解的话,会更好理解若在假设重复子串的长度最多为L的限制下有解, 则对于任意一个比L小的限制L'<L, 也一定有解. 这就说明存在解的连续性, 这样就可以用二分查找答案长度L. 给出一个关于LCP的定理LCP(SA[i], SA[j]) = RMQ(Height[i+1..j]). 由此, 若存在k, 满足Height[k] < L, 则对于所有i, j 满足i < k < j, 有LCP(SA[i 阅读全文
posted @ 2011-05-17 22:57
枕边梦
阅读(431)
评论(0)
推荐(0)
摘要:
嘿嘿,用大牛的代码过的,我觉得,要理解这个好难呀,但要是用了模板计算后缀数组sa[],名次数组rank[],还有height[],height[]是后缀数组的关键所在,用来模板计算出这三个数组,后缀数组的应用也就拓展得开了哦看下模板吧,不过这个版本用了657ms耶,不是很快的说#include <iostream>using namespace std;#define MAXN 200010// max{str.len,256}int b[MAXN],array[4][MAXN],*rank1,*nrank,*sa,*nsa,height[MAXN],n,len;char str[ 阅读全文
posted @ 2011-05-17 20:45
枕边梦
阅读(232)
评论(0)
推荐(0)
摘要:
擅长排列的小明时间限制:1000 ms | 内存限制:65535 KB 难度:4描述 小明十分聪明,而且十分擅长排列计算。比如给小明一个数字5,他能立刻给出1-5按字典序的全排列,如果你想为难他,在这5个数字中选出几个数字让他继续全排列,那么你就错了,他同样的很擅长。现在需要你写一个程序来验证擅长排列的小明到底对不对。输入 第一行输入整数N(1<N<10)表示多少组测试数据,每组测试数据第一行两个整数 n m (1<n<9,0<m<=n) 输出 在1-n中选取m个字符进行全排列,按字典序全部输出,每种排列占一行,每组数据间不需分界。如样例 样例输入 23 1 阅读全文
posted @ 2011-05-17 10:22
枕边梦
阅读(1618)
评论(0)
推荐(0)