#1523. 好字符串

好字符串

题目描述

给定 NN 个只包含字符 AB 的字符串。对于一个字符串 ss,记其长度为 s|s|,下标从 11 开始编号。 我们称字符串 ss 是一个 好字符串,当且仅当存在若干个二元组 (li,ri)(l_i,r_i),满足以下条件: 1li<ris1 \le l_i < r_i \le |s|sli=sris_{l_i}=s_{r_i}; 每个位置 1,2,,s1,2,\ldots,|s| 恰好出现在一个二元组中; 任意两个不同的二元组 (li,ri)(l_i,r_i)(lj,rj)(l_j,r_j),不存在如下交叉情况:

li<lj<ri<rjl_i < l_j < r_i < r_j

也就是说,需要将字符串中的每个字符与另一个相同字符配对,并且如果把每一对位置在字符串上方用弧线连接起来,所有弧线不能相交。 请你统计给定的 NN 个字符串中,有多少个是好字符串。 输入格式 第一行输入一个正整数 NN,表示字符串个数。 接下来 NN 行,每行输入一个只包含字符 AB 的字符串。

输出格式

输出一行一个整数,表示好字符串的数量。

输入输出样例 #1

输入 #1

3
ABAB
AABB
ABBA

输出 #1

2

输入输出样例 #2

输入 #2

3
AAA
AA
AB

输出 #2

1

输入输出样例 #3

输入 #3

1
ABBABB

输出 #3

1

样例解释

样例 #1 解释

输入的三个字符串分别为 ABABAABBABBA

  1. ABAB 字符串 ABAB 中,第 11 个字符和第 33 个字符都是 A,第 22 个字符和第 44 个字符都是 B。 只能按如下方式配对: 第 11 个字符 A 和第 33 个字符 A 配对; 第 22 个字符 B 和第 44 个字符 B 配对。 画出弧线后如下:
位置: 1   2   3   4
字符: A   B   A   B

       ┌───────┐
       │       │
       A   B   A   B
           │       │
           └───────┘

这两条弧线发生交叉,也就是出现了:

1<2<3<41 < 2 < 3 < 4

因此 ABAB 不是好字符串。

  1. AABB 可以这样配对: 第 11 个字符 A 和第 22 个字符 A 配对; 第 33 个字符 B 和第 44 个字符 B 配对。
位置: 1   2   3   4
字符: A   A   B   B

       ┌───┐   ┌───┐
       A   A   B   B

两条弧线没有交叉,因此 AABB 是好字符串。

  1. ABBA 可以这样配对: 第 11 个字符 A 和第 44 个字符 A 配对; 第 22 个字符 B 和第 33 个字符 B 配对。
位置: 1   2   3   4
字符: A   B   B   A

       ┌───────────┐
       │           │
       A   B   B   A
           ┌───┐
           B   B

两条弧线是包含关系,没有交叉,因此 ABBA 是好字符串。 所以样例 #1 中共有 22 个好字符串,答案为 2

样例 #2 解释

输入的三个字符串为:

AAA
AA
AB

AAA 的长度为奇数,不可能把每个字符都两两配对,因此不是好字符串; AA 可以将两个 A 配对,因此是好字符串; AB 两个字符不同,无法配对,因此不是好字符串。 所以只有 11 个好字符串,答案为 1

样例 #3 解释

字符串为:

ABBABB

可以这样配对: 第 11 个字符 A 和第 44 个字符 A 配对; 第 22 个字符 B 和第 33 个字符 B 配对; 第 55 个字符 B 和第 66 个字符 B 配对。

位置: 1   2   3   4   5   6
字符: A   B   B   A   B   B

       ┌───────────┐   ┌───┐
       │           │   │   │
       A   B   B   A   B   B
           ┌───┐
           B   B

所有弧线都没有交叉,因此 ABBABB 是好字符串。 所以答案为 1

数据范围

对于所有测试数据,满足: 1N1001 \le N \le 100; 每个字符串只包含字符 AB; 每个字符串长度在 22100000100000 之间; 所有字符串长度之和不超过 10000001000000

相关

在下列比赛中:

test