编程题
### 问题描述 大衣开了一家医院,有以下几种血型的捐献者共 $N$ 人: - 血型 $A$ 的人可以捐血给血型 $A$ 和血型 $AB$ 的人。 - 血型 $B$ 的人可以捐血给血型 $B$ 和血型 $AB$ 的人。 - 血型 $AB$ 的人只能捐血给血型 $AB$ 的人。 - 血型 $O​$ 的人可以捐血给血型 $A​$、血型 $B​$ 和血型 $AB​$ 的人。 现在给你这 $N$ 名捐献者的血型类型,第 $i$ 个人血型为 $C_i$,大衣想要选一些人形成**捐献链**,即 $1\rightarrow 3\rightarrow2\rightarrow\dots\rightarrow x$,表示第 $i$ 个人捐血给第 $i+1​$ 个人,求这条链最大长度。 ### 输入格式 第一行输入一个正整数 $N​$ 表示捐献者数量。 第二行输入 $N$ 个字符串 $C_i$ 表示每个捐献者的血型。 ### 输出格式 输出一个数字表示这条链最大长度。 ### 样例输入1 ```text 3 A B A ``` ### 样例输出1 ```text 2 ``` ### 样例输入2 ```text 2 A B ``` ### 样例输出2 ```text 1 ``` ### 样例输入3 ```text 5 AB A A AB A ``` ### 样例输出3 ```text 5 ``` ### 说明 - 样例 $1​$:第 $1​$ 个人可以捐血给第 $3​$ 个人,所以该捐献链长度为 $2​$ 是最长的。 - 样例 $2$:没有人可以捐血给别人,因此最长链为单独一个人。 - 样例 $3$:最长捐献链为 $2\rightarrow3\rightarrow5\rightarrow1\rightarrow4$。 ### 评测数据规模 对于所有的评测数据,$1\le N\le 2\times10^5$,$C_i\in${$A,B,AB,O$}。
查看答案
赣ICP备20007335号-2