atcoder#AGC047B. [AGC047B] First Second

[AGC047B] First Second

题目描述

リマクは、文字列の先頭 2 2 文字のうち片方を取り除くことを繰り返し行えます。例えば、$ abcxyx\ \rightarrow\ acxyx\ \rightarrow\ cxyx\ \rightarrow\ cyx $ とすることができます。

N N 個の相異なる文字列 S1, S2, , SN S_1,\ S_2,\ \ldots,\ S_N が与えられます。N  (N1) / 2 N\ \cdot\ (N-1)\ /\ 2 個のペア (Si, Sj) (S_i,\ S_j) のうち何個において、リマクは一方からもう一方を得ることができるでしょうか。

输入格式

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

N N S1 S_1 S2 S_2 \vdots SN S_N

输出格式

リマクが一方の文字列からもう一方を得られるような非順序対 (Si, Sj) (S_i,\ S_j) (i  j i\ \neq\ j ) の個数を出力せよ。

题目大意

hhoppitree 有 nn 个字符串,其中第 ii 个字符串为 sis_i,他想知道在所有的整数对 (i,j)(1ijn)(i,j)(1\le i\ne j\le n) 中,有多少对整数对 (i,j)(i,j) 满足 sis_i 能通过进行若干次以下操作成为 sjs_j

  • si2|s_i|\ge2 时,删去 sis_i 的前两个字符中的任意一个字符。
3
abcxyx
cyx
abc
1
6
b
a
abc
c
d
ab
5

提示

制約

  • 2  N  200000 2\ \leq\ N\ \leq\ 200\,000
  • Si S_i は英小文字 a - z からなる。
  • Si  Sj S_i\ \neq\ S_j
  • 1  Si 1\ \leq\ |S_i|
  • S1 + S2 +  + SN  106 |S_1|\ +\ |S_2|\ +\ \ldots\ +\ |S_N|\ \leq\ 10^6

Sample Explanation 1

条件を満たすペアは (abcxyx, cyx) (abcxyx,\ cyx) のみです。

Sample Explanation 2

条件を満たすペアは (b, abc) (b,\ abc) , (a, abc) (a,\ abc) , (abc, c) (abc,\ c) , (b, ab) (b,\ ab) , (a, ab) (a,\ ab) 5 5 個です。