QOJ.ac

QOJ

Limite de temps : 5 s Limite de mémoire : 2048 MB Points totaux : 100

#15704. Recovering the Tablet

Statistiques

很久以前,在我们的现代文明兴起之前,在你们任何人出生之前,是公元前 1966 年(SWERC 前 3961 年)。在这个黑暗的时期,既没有流媒体服务,也没有任何编程竞赛。因此,为了娱乐自己,人类在泥板上玩着一些原始的游戏。

今年,人们创造了一款神秘的游戏:Kakurus。我们对 Kakurus 几乎一无所知(当时互联网档案馆尚未建立),除了在你发现的一件文物上描述的以下几条规则:

  1. 游戏在一个 $M \times N$ 的网格上进行;
  2. 每个格子要么是黑色,要么是白色;
  3. 白色格子最初是空的,但你必须在每个白色格子内填入一个 $1$ 到 $9$(含)之间的整数;
  4. 水平限制:一个黑色格子可以包含一个整数,该整数对应于其右侧连续白色格子的数值之和(直到遇到第一个黑色格子或网格边界);
  5. 垂直限制:一个黑色格子可以包含一个整数,该整数对应于其下方连续白色格子的数值之和(直到遇到第一个黑色格子或网格边界)。

请注意,最后两条规则是相互独立的:一个黑色格子内部可以有 0、1 或 2 个整数。还请注意,对数字的重复没有限制。最后,为了使这个问题有趣,每个白色格子都恰好被一个垂直限制和一个水平限制所覆盖。

在你的文物底部有一个 Kakurus 网格。它已经被填满了,但不一定是一个正确的解——这可能是由于这件古老文物的年代久远而导致的损坏。你能找到一个与这个给出的参考解尽可能接近的有效解吗?

如果你在某个白色格子上填写的数字是 $X$,而该格子在参考解中的值为 $T$,那么接近度得分为 $|X - T|$。网格的最终接近度得分是所有格子接近度得分的总和。你的目标是找到可以达到的最小接近度得分。

输入格式

输入的第一行包含三个整数 $M$、$N$ 和 $S$,分别表示网格的行数、列数以及和限制的数量。

接下来有 $M$ 行。其中的第 $i$ 行仅包含数字 09。第 $j$ 个字符等于 0 当且仅当第 $i$ 行第 $j$ 列($1 \le i \le M$,$1 \le j \le N$)的格子是黑色的,否则它等于该格子在参考解中的值(因此该格子是白色的)。

接下来有 $S$ 行。每行格式为 c i j s,其中 $c$ 等于 HV,$1 \le i \le M$,$1 \le j \le N$,且 $s$ 是一个介于 $1$ 和 $135$(含)之间的整数。在你的解中,位于第 $i$ 行第 $j$ 列的格子右侧(当 $c = \text{H}$ 时)或下方(当 $c = \text{V}$ 时)的连续白色格子的数值之和必须等于 $s$。

保证每个白色格子都恰好被一个垂直限制和一个水平限制所覆盖。

输出格式

如果网格无解,你必须输出 IMPOSSIBLE。否则,你的输出应该包含可以达到的最小接近度得分。

数据范围

  • $1 \le M \le 16$;
  • $1 \le N \le 16$;
  • $0 \le S \le 2 \times M \times N$。

样例

输入样例 1

4 4 7
0000
0032
0233
0204
H 3 1 9
V 1 3 6
H 2 2 5
V 2 2 5
V 1 4 9
H 4 1 2
H 4 3 4

输出样例 1

1

输入样例 2

3 4 5
0000
0012
0345
H 2 2 3
H 3 1 12
V 2 2 3
V 1 3 5
V 1 4 6

输出样例 2

IMPOSSIBLE

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.