#lg14985. [USACO26JAN1] Pluses and Minuses P
[USACO26JAN1] Pluses and Minuses P
[AdditionalFile5597.zip](file://AdditionalFile5597.zip?type=additional_file)
#5597. 「USACO 2026 First Platinum」Pluses and Minuses
标签: 传统 | 时间限制: 2000 ms | 内存限制: 256 MiB |
题目描述
题目译自 USACO 2026 First Contest, Platinum Problem 3. Pluses and Minuses
农夫约翰曾经在他的牧场地上画了一个矩形网格。在每个格子里,他画了一个 或 (分别代表 和 )。
随着时间的推移,颜料褪色了,农夫约翰现在只记得某些格子的值。然而,农夫约翰确实记得关于原始涂色方案的一个重要事实:
在每一行和每一列中,任何连续子段的数值之和总是介于 和 之间(含端点)。
作为一个例子,考虑行 。它不满足条件,因为子段 的和为 。
然而,行 确实满足条件:
[ - ] + + - sum = -1
[ - + ] + - sum = 0
[ - + + ] - sum = +1
[ - + + - ] sum = 0
- [ + ] + - sum = +1
- [ + + ] - sum = +2
- [ + + - ] sum = +1
- + [ + ] - sum = +1
- + [ + - ] sum = 0
- + + [ - ] sum = -1
请计算符合农夫约翰记忆的不同网格的数量。
输入格式
第一行包含 (),即测试数据的组数。每组测试数据的格式如下:
第一行包含 ,,和 (,),意味着网格的尺寸为 ,且农夫约翰记得网格中 个不同格子的值。
接下来的 行每行包含一个字符 ,后跟两个整数 和 (),意味着网格第 行第 列的值是 。保证在单组测试数据中,没有有序对 出现超过一次。
此外,保证所有测试数据中 的总和与 的总和都不超过 ,且所有测试数据中 的总和不超过 。
输出格式
对于每组测试数据,在单独的一行中输出网格的数量。
样例 1
输入
2
1 3 3
+ 1 3
+ 1 1
- 1 2
1 3 3
+ 1 1
+ 1 3
+ 1 2
输出
1
0
样例 2
输入
1
2 2 0
输出
7
以下是这 个网格:
++
++
++
+-
++
-+
+-
++
+-
-+
-+
++
-+
+-
数据范围与提示
- 测试点 3-4: 对于所有测试数据,
- 测试点 5-6: 对于所有测试数据,
- 测试点 7-11:
- 测试点 12-14:
- 测试点 15-22: 无额外约束
供题:Alex Chen