思路
本题是后缀数组一个常见的应用,不可重叠最长重复子串。后缀数组的基本知识参考SPOJ - SUBST1 New Distinct Substrings一文。对于一个不可重叠最长子串的问题,我们首先对长度二分答案,然后对height数组分段,连续的height值>=k的我们分在一起,然后记录段内sa的最小值和最大值,如果两者的差大于等于k+1(题意要求重复子串之间要有一个字符的间隔)那么现在的k就是符合条件的。需要注意的是这道题卡了cin,cout。
代码
1 |
|
真彩希帆のファン
本题是后缀数组一个常见的应用,不可重叠最长重复子串。后缀数组的基本知识参考SPOJ - SUBST1 New Distinct Substrings一文。对于一个不可重叠最长子串的问题,我们首先对长度二分答案,然后对height数组分段,连续的height值>=k的我们分在一起,然后记录段内sa的最小值和最大值,如果两者的差大于等于k+1(题意要求重复子串之间要有一个字符的间隔)那么现在的k就是符合条件的。需要注意的是这道题卡了cin,cout。
1 | #include <iostream> |