4188 - 集训营组队

题目描述

小 R 是一次编程集训营的组队负责人。本次集训营共招募了 N 名学员,每位学员拥有一个唯一的报名编码(由大写英文字母组成的非空字符串)。报名编码的首字母决定该学员所属的培训组别。

根据本次集训营的招募规则,只有报名编码首字母属于 {\texttt{M},\ \texttt{A},\ \texttt{R},\ \texttt{C},\ \texttt{H}} 的学员才是正式学员,首字母为其他字母的报名信息视为无效,不参与后续操作。

小 R 需要从所有正式学员中选出 3 名,组成一支参赛小队,要求 3 人分别来自不同的培训组别(即 3 人的报名编码首字母互不相同)。请帮小 R 计算满足条件的选法总数(不计顺序)。

输入

输入共 N + 1 行。

第一行包含一个正整数 N,表示学员总数。

接下来 N 行,第 i 行(1 \leq i \leq N)包含一个字符串 S_i,表示第 i 名学员的报名编码。

输出

输出一行,包含一个非负整数,表示满足条件的选法总数。

样例

输入

5
MECHANICAL
ALUMINUM
REACTOR
COATING
HYDRAULIC

输出

10

输入

5
MOTORBASE
MOUNTING
AXLEROD
ROTORSHAFT
BRACKET

输出

2

输入

12
MELON
MERCURY
MIRROR
ARROW
ANCHOR
RHYTHM
RADAR
CABLE
COPPER
CROWN
BINARY
DELTA

输出

60
说明

样例说明 1

五名学员的报名编码首字母依次为 \texttt{M}\texttt{A}\texttt{R}\texttt{C}\texttt{H},均为正式学员,分属 5 个不同组别,每组各 1 人。

可以把“选 3 个不同组别”理解为:从这 5 个组别里,挑出任意 3 组来组队。

例如:{\texttt{M},\texttt{A},\texttt{R}}{\texttt{M},\texttt{A},\texttt{C}}{\texttt{M},\texttt{A},\texttt{H}}{\texttt{M},\texttt{R},\texttt{C}}{\texttt{M},\texttt{R},\texttt{H}}{\texttt{M},\texttt{C},\texttt{H}}{\texttt{A},\texttt{R},\texttt{C}}{\texttt{A},\texttt{R},\texttt{H}}{\texttt{A},\texttt{C},\texttt{H}}{\texttt{R},\texttt{C},\texttt{H}},一共 10 组。

又因为每个组别都只有 1 人,所以每一组都只有 1 种选法。总数就是 10 \times 1 = 10

样例说明 2

五名学员的报名编码首字母依次为 \texttt{M}\texttt{M}\texttt{A}\texttt{R}\texttt{B}

其中 \texttt{BRACKET} 首字母为 \texttt{B},不属于有效组别,视为无效报名,共 4 名正式学员。

各组别人数:\texttt{M}2 人,\texttt{A}1 人,\texttt{R}1 人,\texttt{C}\texttt{H} 组各 0 人。

要选出来自 3 个不同组别的队员,所选的这 3 个组别里每组都必须至少有 1 人。

这里 \texttt{C}\texttt{H} 组人数为 0,所以只要选到它们就不可能组队成功。因此真正可行的组别只能是 {\texttt{M},\texttt{A},\texttt{R}}

在这三个组里选人:\texttt{M} 组有 2 种选法,\texttt{A} 组有 1 种,\texttt{R} 组有 1 种,所以总数为 2 \times 1 \times 1 = 2

数据范围与提示

对于 10\% 的数据,满足 1 \le N \lt 5

对于另外 10\% 的数据,满足 N=5

对于所有测试数据,保证:1 \leq N \leq 10^5S_i 由大写英文字母组成,1 \leq |S_i| \leq 10,对所有 1 \leq i < j \leq N,均有 S_i \neq S_j(报名编码互不相同)。

答案可能超出 32 位整数的表示范围,但保证不超过 64 位整数的表示范围,请注意选用合适的数据类型。

标签
题目参数
时间限制 1 秒
内存限制 512 MB
提交次数 0
通过人数 0
金币数量 4 枚
难度 基础


上一题 下一题