QOJ.ac

QOJ

حد الوقت: 5 s - 10 s حد الذاكرة: 1024 MB مجموع النقاط: 12

#5840. 优雅的钻石

الإحصائيات

国王雇佣你为他制作一颗优雅的钻石。优雅的钻石是一个二维物体,由数字组成,且关于水平轴和垂直轴对称。例如,以下四个形状是优雅的钻石:

2       8      3     7
3 3     8 8    2 2
4 1 4     8      3
3 3
2

以下三个形状是钻石,但并不优雅:

2       1        3
1 1     1 2      1 1
1     1 1 1    3 1 3
2 1      1 1
1        2

以下三个形状不是钻石:

1     2     8   8
1 1   222      0
2     00000

国王首先会给你一颗钻石,它可能并不优雅。你的任务是通过增强它来使其变得优雅,即添加数字以构成一颗更大的钻石。因为你不想花费太多钱,所以你希望以尽可能小的代价完成这项工作。

定义

大小为 $k$ 的钻石由 $2k-1$ 行数字(0-9)组成,数字间以单个空格分隔,排列方式如下:

  • 第 $i$ 行($1 \le i \le k$)包含 $k-i$ 个空格,然后是 $i$ 个由单个空格分隔的数字。
  • 第 $i$ 行($k < i < 2k$)包含 $i-k$ 个空格,然后是 $2k-i$ 个由单个空格分隔的数字。

大小为 $k$ 的优雅钻石是大小为 $k$ 的钻石,且满足以下两个对称性质:

  • 水平对称:设 $c_i$ 为第 $i$ 行的数字个数。第 $i$ 行的第 $j$ 个数字($j=1$ 为第一个数字)必须与第 $c_i+1-j$ 个数字相同。
  • 垂直对称:第 $i$ 行的第 $j$ 个数字($i=1$ 为第一行)必须与第 $2k-i$ 行的第 $j$ 个数字相同。

大小为 $k$ 的钻石可以通过添加数字进行增强。增强大小为 $k$ 的钻石的结果具有以下性质:

  • 结果是一颗大小 $\ge k$ 的钻石。
  • 原始钻石是结果的一部分。换句话说,存在某些 $X$ 和 $Y$,使得对于原始钻石中第 $i$ 行第 $j$ 个字符为数字(而非空格)的所有 $i$ 和 $j$,结果中第 $i+Y$ 行第 $j+X$ 个字符也是数字,且与原始钻石中第 $i$ 行第 $j$ 个字符相同。

增强钻石的代价等于增强结果中的数字总数减去原始钻石中的数字总数。

输入格式

输入的第一行给出测试用例的数量 $T$。接下来是 $T$ 个测试用例。每个测试用例包含一个单独的整数 $k$,随后是大小为 $k$ 的钻石。

输出格式

对于每个测试用例,输出一行 "Case #x: y",其中 $x$ 是用例编号(从 1 开始),$y$ 是将给定钻石增强为优雅钻石所需的最小代价。如果钻石已经是优雅的,则 $y=0$。

数据范围

$1 \le T \le 100$。

小数据集(测试集 1 - 可见;4 分)

$1 \le k \le 10$。

大数据集(测试集 2 - 隐藏;8 分)

$1 \le k \le 51$。

样例

样例输入 1

4
1
0
2
1
2 2
1
2
1
1 2
1
3
1
6 3
9 5 5
6 3
1

样例输出 1

Case #1: 0
Case #2: 0
Case #3: 5
Case #4: 7

说明

共有四个用例。前两个用例初始即为大小分别为 1 和 2 的优雅钻石,无需增强,因此代价为 0。第三个用例可以增强为:

3
1 1
1 2 1
1 1
3

存在多种可能的增强方式,但这是代价最小的一种,代价为 5。在第四个用例中,我们可以将钻石增强为以下优雅钻石:

9
1 1
6 3 6
9 5 5 9
6 3 6
1 1
9

...代价为 7。

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.