CF1070J Streets and Avenues in Berhattan
题目描述
Berhattan 是 Berland 的首都。城市中有 $n$ 条东西方向(横向)平行的街道,以及 $m$ 条南北方向(纵向)平行的大道。每条街道与每条大道都相交,形成一个十字路口。因此,Berhattan 一共有 $n \cdot m$ 个十字路口。
最近,Berland 政府进行了更迭。新政府希望以革命英雄的名字来命名所有的街道和大道。
特别委员会准备了 $k$ 个名字的名单。只有这些名字可以被用作街道和大道的新名字。每个名字最多只能使用一次。
委员会成员希望以最小化居民不便为目标来命名街道和大道。他们认为,如果某条街道和某条大道的名字首字母相同,那么它们的交叉口会让居民感到不便。因此,只有每个名字的首字母才是重要的。
给定 $k$ 个名字的首字母,请你求出 $C$ ——在命名完成后,Berhattan 中最小可能的不便十字路口数量。
输入格式
输入包含一个或多个测试用例。第一行为整数 $t$($1 \le t \le 30000$),表示测试用例的数量。每个测试用例单独处理,测试用例之间完全独立,互不影响。
每个测试用例的第一行为用空格分隔的三个整数 $n, m, k$($1 \le n, m \le 30000$;$n + m \le k \le 2 \cdot 10^5$),分别表示街道数、大道数和委员会名单中的名字数。
每个测试用例的第二行为一个长度为 $k$ 的字符串,字符串的第 $i$ 个大写英文字母表示第 $i$ 个名字的首字母。
保证所有测试用例中 $n$ 的总和不超过 $30000$,$m$ 的总和不超过 $30000$,$k$ 的总和不超过 $2 \cdot 10^5$。
输出格式
对于每个测试用例,输出一个整数 $C$,表示在命名完成后,Berhattan 中最小可能的不便十字路口数量。每个测试用例输出一行。
说明/提示
由 ChatGPT 4.1 翻译