QOJ.ac

QOJ

Time Limit: 5 s Memory Limit: 1024 MB Total points: 100

#4968. Aqualin

Statistics

桌游 Aqualin 在一个 $n \times n$ 的网格上进行,每个网格单元都填有一个棋子。每个棋子都是一种特定颜色的动物,即每个棋子代表两个属性:动物类型和动物颜色。为简单起见,我们用字母 'A' 到 'Z' 表示动物类型,用数字 1 到 $n$ 表示不同的颜色。

在网格的 $n^2$ 个单元格都被填满后,游戏进行计分。游戏分为两队。

第一队根据相同类型且大小为 2 或以上的最大连通分量得分。具体来说,对于每种动物类型的最大连通分量,第一队获得 $1 + 2 + \dots + (c-1)$ 分,其中 $c$ 是该分量中动物的数量。例如,如果有 3 只海星 ('A')、4 只章鱼 ('B')、1 只鲸鱼 ('C') 和 2 只海星 ('A') 的连通分量,则仅对前两组动物计分。注意,大小为 1 的分量不得分,并且当存在多个相同动物类型的连通分量时,仅最大的连通分量得分。因此,在上述情况下,第一队将因海星获得 $1 + 2 = 3$ 分,因章鱼获得 $1 + 2 + 3 = 6$ 分,总计 9 分。动物的连通分量是指可以通过在网格中上下左右移动,且仅经过相同类型的动物所能直接或间接到达的动物集合。

第二队根据相同颜色且大小为 2 或以上的最大连通分量得分。计分方式与上述相同,基于分量大小。

以下是一个填好的 $5 \times 5$ 网格示例。在每个单元格中,有序对 $(x, y)$ 表示该单元格中的动物类型为 $x$,颜色为 $y$。

(B,3) (A,1) (C,1) (A,2) (A,5) (B,4) (B,1) (B,5) (E,4) (E,3) (C,3) (C,2) (B,2) (D,2) (E,2) (A,3) (C,4) (A,4) (E,5) (D,1) (D,3) (C,5) (D,4) (D,5) (E,1)

首先,考虑按动物类型计分。右上角有两个 'A' 类型的动物,得分为 1。所有五个 'B' 类型的动物都是连通的(看左上角),得分为 10。四个 'C' 类型的动物是连通的,从动物 (C, 3) 开始,得分为 6。两个 'D' 类型的动物是连通的,即 (D, 4) 和 (D, 5),得分为 1。三个 'E' 类型的动物是连通的,即 (E, 4)、(E, 3) 和 (E, 2),得分为 3。第一队的总分为 $1 + 10 + 6 + 1 + 3 = 21$。

顶部有三个颜色为 1 的动物连通,得分为 3。注意,右下角还有 2 个颜色为 1 的动物连通,但该分数不计入,因为我们只计算单一类型(或颜色)动物的最大连通分量。有 4 个颜色为 2 的动物连通(都在第 3 行),得分为 6。有 3 个颜色为 3 的动物连通(都在第 1 列),得分为 3。有 3 个颜色为 4 的动物连通,即 (C, 4)、(A, 4) 和 (D, 4),得分为 3。有 2 个颜色为 5 的动物连通,即 (E, 5) 和 (D, 5),得分为 1。第二队的总分为 $3 + 6 + 3 + 3 + 1 = 16$。

说明:在给定的示例中,有五种动物类型和五种动物颜色。虽然在这个示例中所有 25 种可能的动物类型/颜色组合都恰好出现了一次,但这并不能保证在所有输入网格中都成立。也就是说,某些动物类型/颜色组合可能会出现多次,而某些动物类型/颜色组合可能根本不会出现。

题目描述

给定游戏结束时网格的内容,确定两队的得分。

输入格式

第一行包含一个整数:$n$ ($2 \le n \le 26$),表示游戏网格的行数和列数。接下来的 $n$ 行每行提供网格中一行的内容。每一行由 $n$ 个项表示,每个项提供对应动物的类型 $x$ ('A' $\le x \le$ 'Z') 和颜色 $y$ ($1 \le y \le n$)。假设输入行从第一列开始,并且这些输入行上的不同值之间恰好有一个空格分隔。

输出格式

单独占一行,输出第一队的得分,后跟一个空格,再后跟第二队的得分。

样例

输入 1

5 
B 3 A 1 C 1 A 2 A 5 
B 4 B 1 B 5 E 4 E 3 
C 3 C 2 B 2 D 2 E 2 
A 3 C 4 A 4 E 5 D 1 
D 3 C 5 D 4 D 5 E 1

输出 1

21 16

输入 2

2 
A 1 B 1 
A 1 B 1

输出 2

2 6

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.