题意:求字符串s的所有前缀出现次数之和。http://www.cnblogs.com/jklongint/p/4446117.html思路:用kmp做,简单且效率高。以前缀结尾的位置分类,令dp[i]为以结尾位置在i的前缀数量,那么dp[i] = cnt(j)(j~i是前缀),而由kmp的next函...
分类:
编程语言 时间:
2015-04-23 07:08:52
阅读次数:
170
Life FormsTime Limit:5000MSMemory Limit:65536KTotal Submissions:10800Accepted:2967DescriptionYou may have wondere...
分类:
编程语言 时间:
2015-04-22 22:10:49
阅读次数:
155
二分+后缀数组在height数组上二分 1 /************************************************************** 2 Problem: 2946 3 User: idy002 4 Language: C++ ...
分类:
其他好文 时间:
2015-04-22 21:55:49
阅读次数:
173
这道题和UVa 12206一样,求至少重复出现k次的最长字串。首先还是二分最长字串的长度len,然后以len为边界对height数组分段,如果有一段包含超过k个后缀则符合要求。 1 #include 2 #include 3 #include 4 using namespace std; 5 ...
分类:
编程语言 时间:
2015-04-22 20:19:37
阅读次数:
199
体验了一把字符串Hash的做法,感觉Hash这种人品算法好神奇。也许这道题的正解是后缀数组,但Hash做法的优势就是编码复杂度大大降低。 1 #include 2 #include 3 #include 4 using namespace std; 5 6 const int maxn = ...
分类:
其他好文 时间:
2015-04-22 13:52:25
阅读次数:
122
传送门:http://poj.org/problem?id=3693
题目:给出一个串,求重复次数最多的连续重复子串;
分析:
枚举重复单元的长度,然后理所当然的枚举起点。利用rmq处理,后缀i,i+l的最长前缀。
lcp/l+1,为当前相邻l长度单元的串的重复次数,但是由于i+=l,提高了效率,但是i不一定刚好是重复串的起点,所以如果r%l!=0,把串往前移l-r%l个单位。找到...
分类:
编程语言 时间:
2015-04-22 09:36:52
阅读次数:
178
妈呀被后缀数组虐的死去活来。。。一开始去看后缀树。。好像很麻烦的样子,后来再看后缀数组,理论好像很好懂的样子,不会实现呀。。
这充分证明了我有多傻逼,花了整整一天才看懂如何实现,还是因为我基数排序没学好?。。。
(update:然后又花了一天看懂求height。。。)
好好看这张图。。。很重要。。
无脑直接排序的时间复杂度是O(n^2logn)因为字串比较是O(n)
这里介绍...
分类:
编程语言 时间:
2015-04-22 09:33:43
阅读次数:
132
求本质不同的第k小子串:求出后缀数组,从0开始扫到n-1,到sa[i]为止一共有sum[i]个本质不同的子串sum[i]=sum[i-1]+n-sa[i]-height[i]直到sum[i]>=k为止求第k小子串:构造后缀树,设f[x]表示以x为前缀的子串数目,g[x]表示以x为前缀的后缀数目查询时...
分类:
其他好文 时间:
2015-04-21 17:56:35
阅读次数:
142
思路倒是一直有,就是好难实现,最后写出来了还是WA了,然后参考了别人的思路
才发现自己对于字符串的不同子串数的求解原理还不是很清楚,然后重新理解了遍
在这道题中,我们每找到一个A后缀,只要找出该后缀已经计算过的子串数就可以了,用pos数组保存
最后还要注意ans要用long long,并且在计算之前就先进行类型转换
#include
#include
#include
using nam...
分类:
其他好文 时间:
2015-04-21 13:03:41
阅读次数:
141
Problem 1564 - A - CircleProblem's Link: http://acm.whu.edu.cn/land/problem/detail?problem_id=1564Mean:给你一个长度不超过1e6的数字串,求第k大的环状数字串的前面那个位置。analyse:好吧,我...
分类:
编程语言 时间:
2015-04-20 20:44:48
阅读次数:
164