atcoder#ABC213F. [ABC213F] Common Prefixes

[ABC213F] Common Prefixes

题目描述

2 2 つの文字列 X,Y X,Y に対して、その類似度 f(X,Y) f(X,Y) を、X X Y Y を先頭から見て一致している文字数とします。
例えば abcaxbc の類似度は 1 1 aaaaaaa の類似度は 3 3 です。

長さ N N の文字列 S S が与えられます。S S i i 文字目以降からなる文字列を Si S_i とします。k=1,,N k=1,\ldots,N のそれぞれについて、f(Sk,S1)+f(Sk,S2)++f(Sk,SN) f(S_k,S_1)+f(S_k,S_2)+\ldots+f(S_k,S_N) を求めてください。

输入格式

入力は以下の形式で標準入力から与えられる。

N N S S

输出格式

N N 行出力せよ。

i i 行目には k=i k=i の問題の答えを出力せよ。

题目大意

对于两个字符串 X,YX,Y,定义 f(X,Y)f(X,Y)XXYY 的最长公共前缀长度。现给定一个长为 nn 的字符串 SS,定义 SiS_i 表示 SS 的从第 ii 个字符开始的后缀(包含第 ii 个字符),你需要对于所有的 1kn1\le k\le n 求出 i=1nf(Sk,Si)\sum\limits_{i=1}^nf(S_k,S_i)

Translated by _Ponder_

3
abb
3
3
2
11
mississippi
11
16
14
12
13
11
9
7
4
3
4

提示

制約

  • 1  N  106 1\ \leq\ N\ \leq\ 10^6
  • S S は英小文字のみからなる長さ N N の文字列

Sample Explanation 1

S1,S2,S3 S_1,S_2,S_3 はそれぞれ abb, bb, b です。 - k=1 k=1 のとき f(S1,S1)+f(S1,S2)+f(S1,S3)=3+0+0=3 f(S_1,S_1)+f(S_1,S_2)+f(S_1,S_3)=3+0+0=3 - k=2 k=2 のとき f(S2,S1)+f(S2,S2)+f(S2,S3)=0+2+1=3 f(S_2,S_1)+f(S_2,S_2)+f(S_2,S_3)=0+2+1=3 - k=3 k=3 のとき f(S3,S1)+f(S3,S2)+f(S3,S3)=0+1+1=2 f(S_3,S_1)+f(S_3,S_2)+f(S_3,S_3)=0+1+1=2