CF2096C Wonderful City

题目描述

你是古伯兰王国一座城市的骄傲领导者。这座城市有 $n^2$ 栋建筑,排列成 $n$ 行 $n$ 列的网格。位于第 $i$ 行第 $j$ 列的建筑高度为 $h_{i,j}$。 当城市中任意两个相邻建筑的高度都不相同时,这座城市才是美丽的。换句话说,必须满足以下条件: - 不存在位置 $(i,j)$($1 \leq i \leq n$,$1 \leq j \leq n-1$)使得 $h_{i,j} = h_{i,j+1}$; - 不存在位置 $(i,j)$($1 \leq i \leq n-1$,$1 \leq j \leq n$)使得 $h_{i,j} = h_{i+1,j}$。 A 公司有 $n$ 名工人,B 公司也有 $n$ 名工人。每名工人最多只能被雇佣一次。 雇佣 A 公司的第 $i$ 名工人需要花费 $a_i$ 枚金币。雇佣后,该工人会: - 将第 $i$ 行所有建筑的高度增加 $1$。即,将 $h_{i,1}, h_{i,2}, \ldots, h_{i,n}$ 都增加 $1$。 雇佣 B 公司的第 $j$ 名工人需要花费 $b_j$ 枚金币。雇佣后,该工人会: - 将第 $j$ 列所有建筑的高度增加 $1$。即,将 $h_{1,j}, h_{2,j}, \ldots, h_{n,j}$ 都增加 $1$。 请计算使城市变得美丽所需的最少金币数,如果不可能实现则返回 $-1$。

输入格式

每个测试包含多个测试用例。第一行包含测试用例的数量 $t$($1 \le t \le 100$)。接下来是各个测试用例的描述。 每个测试用例的第一行包含一个整数 $n$($2 \le n \le 1000$)——网格的大小。 接下来每个测试用例的 $n$ 行中,第 $i$ 行包含 $n$ 个整数 $h_{i,1}, h_{i,2}, \ldots, h_{i,n}$($1 \le h_{i,j} \le 10^9$)——第 $i$ 行建筑的高度。 每个测试用例的下一行包含 $n$ 个整数 $a_1, a_2, \ldots, a_n$($1 \le a_i \le 10^9$)——雇佣 A 公司工人的费用。 每个测试用例的下一行包含 $n$ 个整数 $b_1, b_2, \ldots, b_n$($1 \le b_j \le 10^9$)——雇佣 B 公司工人的费用。 保证所有测试用例的 $n$ 之和不超过 $1000$。

输出格式

对于每个测试用例,输出一个整数——所需的最少金币数,如果不可能则输出 $-1$。

说明/提示

对于第一个测试用例,可以看到城市已经是美丽的,因此答案为 $0$。 对于第二个测试用例,我们可以雇佣 A 公司的第 $2$ 名工人、A 公司的第 $4$ 名工人和 B 公司的第 $4$ 名工人: - 初始状态: ``` 1 2 1 2 3 2 1 2 1 2 1 1 1 3 1 2 ``` - 雇佣 A 公司第 $2$ 名工人后: ``` 1 2 1 2 4 3 2 3 1 2 1 1 1 3 1 2 ``` - 雇佣 A 公司第 $4$ 名工人后: ``` 1 2 1 2 4 3 2 3 1 2 1 1 2 4 2 3 ``` - 雇佣 B 公司第 $4$ 名工人后: ``` 1 2 1 3 4 3 2 4 1 2 1 2 2 4 2 4 ``` 此时城市变得美丽,雇佣工人的总费用为 $2 + 4 + 8 = 14$,这是可能的最小费用。 对于第三个测试用例,无论如何操作都无法使城市变得美丽,因此答案为 $-1$。 翻译由 DeepSeek V3 完成