2025 Summer Day22

2026 年 3 月 5 日 星期四
2

2025 Summer Day22

课堂内容

后缀数组

后缀数组主要指两个数组 sasarankrank

  • saisa_i 表示所有后缀中按字典序大小从小到大排序后排名为 ii 的后缀的起始位置。
  • rankirank_i 表示以 ii 为起始位置的后缀的排名。

其中这两个数组有如下性质:

saranki=ranksai=i sa_{rank_i} = rank_{sa_i} = i

可以使用倍增 + 基数排序的方式求解 sasarankrank 数组,复杂度 O(nlogn)O(n \log n)

除此之外,还有一个 heightheight 数组表示 saisa_isai1sa_{i-1} 两个后缀的 LCP (Longest Common Prefix) 的长度。

模版题:Luogu-P10469 后缀数组 提交记录:Link

例题

Luogu-P3809 后缀排序

题目大意

给定一个长度为 nn 的仅由小写字母组成的字符串,将其所有后缀按字典序从小到大排序后,求排名为 ii 的后缀的起始位置。

思路

就是后缀数组的简单应用,求出 sasa 数组后输出即可。注意下标的问题。

提交记录:Link

使用社交账号登录

  • Loading...
  • Loading...
  • Loading...
  • Loading...
  • Loading...