CodeForces 1098F. Ж-function

Posted tinywong

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CodeForces 1098F. Ж-function相关的知识,希望对你有一定的参考价值。

题目简述:给定字符串$s[1 dots n](n leq 2 imes 10^5)$,以及$Q leq 2 imes 10^5$个询问,每个询问有两个参数$1 leq l leq r leq n$,求

$$ sum_{i=l}^r operatorname{lcp}(s[l dots r], s[i dots r]), $$

其中$operatorname{lcp}(s, t)$表示字符串$s$和$t$的最长公共前缀(Longest Common Prefix)的长度。

解:

code

模型转化

$$ sum_{i=l}^r operatorname{lcp}(s[l dots r], s[i dots r]) = sum_{i=l}^r min{operatorname{lcp}(s[l dots n], s[i dots n]), r-l+1} $$

后缀自动机(Suffix Automaton)与后缀树(Suffix Tree)

后缀自动机学习资料:

1. CSDN

2. SAISUMIT

3. CodeForces

后缀树学习资料:

1. cnblogs

 

为了方便起见,我们在这里再次简要申明后缀自动机和后缀树的定义,以防止混淆各种不同定义的细微差别。

一个(确定)有限状态自动机((Deterministic) Finite-State Automaton)$A = (Q, Sigma, delta, q_0, F)$,其中

  ·$Q$是一个有限的状态集合。

  ·$Sigma$是一个有限的字符集。

  ·$delta: Q imes Sigma o Q$是转移函数。若$delta(p,a)=q$,则可看作是$p$至$q$有一条权值为$a$的边。

  ·$q_0 in Q$是初始状态。

  ·$F subseteq Q$是接受状态的集合。

一个非空字符串$s$的后缀自动机$ ext{SA}(s)$是一个有限状态自动机$A = (Q, Sigma, delta, q_0, F)$,其中

  ·$Q$和$delta$构成了一个有向无环图(Directed Acyclic Graph)。

  ·$F = { f_1, f_2, dots, f_{|s|} }$,其中$f_{k}$对应后缀$s[kdots |s|]$。若对$q in Q$,定义$ ext{str}(q) = { t in Sigma^*: delta(q_0, t) = q } $,则$ ext{str}(f_k) = { s[k dots |s|] }$。

以上是关于CodeForces 1098F. Ж-function的主要内容,如果未能解决你的问题,请参考以下文章

Codeforces 1098B. Nice table 构造

Codeforces round 1098

CodeForces 1098D. Eels

CodeForces 1098E. Fedya the Potter

HDU 1098 [Ignatius's puzzle] 数论

Hdu-1098解题报告