pku2406 kmp/后缀数组

来源:互联网 发布:张龙 java 编辑:程序博客网 时间:2024/06/05 14:45
 

Pku2406

 

求一个串最多可以分成几个前缀串的k次连接。。。如abab最多可以由ab两次连接。。。

 

 

这题本来是kmp的一道水题,但也可以用后缀数组来做,先求出height数组,然再维护所有lcp(rank[0], rank[j]),由于用RMQ需要开best[20][maxn]这么大的数组会ME,所以只能想其他方法,就是维护height[rank[0]]左右与它的最小值存在一个一维数组里面,就是lcp(rank[0],rank[j])。然后枚举所求前缀的长度即可,理论上可以O(n),但实际上2700+ms,比kmp慢多了。。。如果某个后缀的前面部分的长度能整除串S的长度len,而且该后缀全部与S匹配完就满足条件。。。

原创粉丝点击