编程题
### 问题描述 在活体器官捐赠中,以下血型是相互兼容的: - 血型 A 的捐赠者可以向血型 A 和血型 AB 的接受者捐赠。 - 血型 B 的捐赠者可以向血型 B 和血型 AB 的接受者捐赠。 - 血型 AB 的捐赠者只能向血型 AB 的接受者捐赠。 - 血型 O 的捐赠者可以向所有血型的接受者捐赠。 现在,医院里有 $N$ 名患者,第 $i$ 名患者的血型为 $B_i$。注意,$B_i$ 的值只能是 A,B,AB 或 O。 当一个捐赠者可以向一个接受者捐赠血液,而该接受者又可以向另一个接受者捐赠血液,依此类推,我们称这样的患者序列构成了一个链。 你的任务是找出可以构成血液输血链的最大人数。 ### 输入格式 第一行输入一个整数 $T$,表示测试用例的数量。 每个测试用例包含两行: - 第一行输入一个整数 $N$,表示患者的数量。 - 第二行输入 $N$ 个字符串,分别是 $B_1$,$B_2$,...,$B_N$,表示每名患者的血型。 ### 输出格式 对于每个测试用例,输出一个整数,表示可以构成血液输血链的最大人数。 ### 样例输入 ```markdown 4 3 A B A 2 A B 4 A B O B 5 AB A A AB A ``` ### 样例输出 ```markdown 2 1 3 5 ``` ### 说明 样例中的第一个测试用例:这里有 $3$ 名患者,他们的血型为 A,B 和 A。可以形成的链为第 $1$ 名患者到第 $3$ 名患者,因此,链的长度为 $2$。 样例中的第二个测试用例:这里有 $2$ 名患者,他们的血型为 A 和 B。两名患者的血型不兼容,因此,链的长度为 $1$。 ### 评测数据范围 $1 \leq T \leq 1000$。 $1 \leq N \leq 10^5$。 $B_i \in \textbraceleft A, B, AB, O\textbraceright $。 所有测试用例中 $N$ 的和不超过 $2 \times 10^5$。
查看答案
赣ICP备20007335号-2