uva10829 L-Gap Substrings

  • 题意
    给出一个长度为\(n(\leqslant 50000)\)的字符串,求形如\(\mathrm{UVU}\)形式的字串,其中\(\mathrm{V}\)的长度给定。
  • 题解
    枚举\(\mathrm{U}\)的长度\(L\),考虑第一个\(\mathrm{U}\)的出现位置,显然每一个这样的\(\mathrm{U}\)都必然覆盖且仅覆盖一个\(kL,k \in N\)的位置,那么我们考虑在这个位置统计到它,对于一个\(kL\)的位置,它对答案的贡献是\(\max(\min(L, lcp_{pre}(i, i + L + h)) + \min(L, lcp_{suf}(i, i + L + h))\)\(lcp_{pre}, lcp_{suf}\)分别表示前缀和后缀的最长公共子串。
    根据调和级数,复杂度为\(O(n\log n)\)
  • code
posted @ 2016-04-21 19:47  Showson  阅读(200)  评论(0编辑  收藏  举报