拖了一周才说的通知
电脑出现致命问题,短期内难以修理。在电脑修理完成前,本博客无限期停更。这段时间内的文章将用 CSDN 发布。
拖了一周才说的通知
电脑出现致命问题,短期内难以修理。在电脑修理完成前,本博客无限期停更。这段时间内的文章将用 CSDN 发布。
个人向吐槽:怎么这么多图论题啊
CSP-S 2019,T1:使用
unsigned long long
CSP-S 2020,T2:需特判 $2^{64}$
NOIP 2020,T1:需要使用简单高精度
NOIP 2021:????
注:本文翻译自 Поиск всех тандемных повторов в строке. Алгоритм Мейна-Лоренца 及其英文翻译版 Finding repetitions,转载时请标注出原文与本文的出处。
给定一个长度为 $n$ 的字符串 $s$。
我们将一个字符串连续写两遍所产生的新字符串称为 **重串 (repetition)**。下文中,为了表述精准,我们将被重复的这个字符串称为原串。
换言之,一个重串等价于一对下标 $(i, j)$,其使得 $s[i \dots j]$ 是两个相同字符串拼接而成的。
你的目标是找出给定的字符串 $s$ 中所有的重串。或者,解决一个较为简单的问题:找到字符串 $s$ 中任意重串或者最长的一个重串。
重链剖分,可以将树上的任意一条路径划分成不超过 $\mathcal{O}(\log n)$ 条连续的链,每条链上的点深度互不相同(即是自底向上的一条链,链上所有点的 LCA 为链的一个端点)。——OI wiki