P15156 [SWERC 2024] Recovering the Tablet

题目描述

很久以前,在我们的现代文明兴起之前,在你们任何人出生之前,是公元前 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$ 行仅包含从 $0$ 到 $9$ 的数字。第 $j$ 个字符等于 $0$ 当且仅当位于第 $i$ 行第 $j$ 列($1 \leq i \leq M$,$1 \leq j \leq N$)的单元格是黑色的,否则等于该单元格(因此是白色的)在提议的解中的值。 然后是 $S$ 行。每行的格式为 $c\ i\ j\ s$,其中 $c$ 等于 $H$ 或 $V$,$1 \leq i \leq M$,$1 \leq j \leq N$,$s$ 是 $1$ 到 $135$(含)之间的整数。在你的解中,位于第 $i$ 行第 $j$ 列的单元格右侧(当 $c = H$ 时)或下方(当 $c = V$ 时)的连续白色单元格的和必须等于 $s$。 保证每个白色单元格恰好被一个垂直约束和一个水平约束覆盖。

输出格式

如果网格无解,你必须输出 IMPOSSIBLE。否则,你的输出应包含可以实现的最小接近分数。

说明/提示

#### 数据范围 - $1 \leq M \leq 16$ - $1 \leq N \leq 16$ - $0 \leq S \leq 2 \times M \times N$ 翻译由 DeepSeek 完成