atcoder#ARC141F. [ARC141F] Well-defined Abbreviation

[ARC141F] Well-defined Abbreviation

题目描述

A, B, C, D のみからなる N N 個の文字列 Si (1 i  N) S_i\ (1\le\ i\ \le\ N) が与えられます。

A, B, C, D のみからなる文字列 T T に対し、以下の操作を考えます。

  • どの Si S_i T T の部分文字列にならなくなるまで、以下を繰り返す。
    • Si, S_i, および T T Si S_i を含む場所をひとつ選び、その場所から Si S_i を取り除いて前後を連結する

部分文字列とは? 部分文字列とは連続する部分列のことを指します。例えば A, AB, BCABC の部分文字列ですが、BAACABC の部分文字列ではありません。 T T が「悪い文字列」であるとは、T T に対する操作結果として得られる文字列が複数存在することをいいます。

「悪い文字列」が存在するか判定してください。

输入格式

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

N N S1 S_1 S2 S_2 \vdots SN S_N

输出格式

「悪い文字列」が存在する場合、 Yes と出力してください。

存在しない場合、 No と出力してください。

题目大意

给定 NN 个由 A,B,C,D 组成的串 Si(1iN)S_i(1\leqslant i\leqslant N)

对一个串 TT 定义如下操作:

  • 选择一个 i[1,N]i\in[1,N],找到一个 (l,r)(l,r) 使得 T[lr]=SiT[l\cdots r]=S_i

  • T[lr]T[l\cdots r]TT 中删除,并把首尾拼接起来。

不断重复以上操作知道任意 SiS_i 都不是 TT 的子串。

我们称 TT 是好的,当且仅当操作后 TT 是唯一的。判断是否存在不好的串。

translated by cszyf

3
A
B
C
No
1
ABA
Yes
4
CBA
ACB
AD
CAB
Yes

提示

制約

  • 1  N  106 1\ \leq\ N\ \leq\ 10^6
  • 1  Si  2 × 106 1\ \leq\ |S_i|\ \leq\ 2\ \times\ 10^6
  • S1+S2+ +SN  2 × 106 |S_1|+|S_2|+\dots\ +|S_N|\ \leq\ 2\ \times\ 10^6
  • i j i\neq\ j ならば Si  Sj S_i\ \neq\ S_j
  • Si S_i A, B, C, D のみからなる文字列

Sample Explanation 1

T T に対する操作結果として得られる文字列は T T から A, B, C をすべて除いたもののみです。

Sample Explanation 2

例えば T= T= ABABA に対する操作の結果として得られる文字列は AB, BA2 2 つあるので T T は「悪い文字列」です。