AT_abc213_f [ABC213F] Common Prefixes

题目描述

对于两个字符串 $X, Y$,它们的**相似度** $f(X, Y)$ 定义为从头开始连续相同的字符数。例如,`abc` 和 `axbc` 的相似度为 $1$,`aaa` 和 `aaaa` 的相似度为 $3$。 给定一个长度为 $N$ 的字符串 $S$。记 $S_i$ 表示从第 $i$ 个字符开始的子串。对于 $k=1,\ldots,N$,请计算 $f(S_k, S_1) + f(S_k, S_2) + \ldots + f(S_k, S_N)$。

输入格式

输入通过标准输入给出,格式如下: > $N$ $S$

输出格式

输出 $N$ 行。 第 $i$ 行输出 $k=i$ 时问题的答案。

说明/提示

### 限制条件 - $1 \leq N \leq 10^6$ - $S$ 是仅由小写英文字母组成的长度为 $N$ 的字符串 ### 样例解释 1 $S_1, S_2, S_3$ 分别为 `abb`、`bb`、`b`。 - 当 $k=1$ 时,$f(S_1, S_1) + f(S_1, S_2) + f(S_1, S_3) = 3 + 0 + 0 = 3$ - 当 $k=2$ 时,$f(S_2, S_1) + f(S_2, S_2) + f(S_2, S_3) = 0 + 2 + 1 = 3$ - 当 $k=3$ 时,$f(S_3, S_1) + f(S_3, S_2) + f(S_3, S_3) = 0 + 1 + 1 = 2$ 由 ChatGPT 4.1 翻译