#SZSY1008. 网格布阵
网格布阵
题目描述
有一个 行 列的网格。部分格子已经驻扎了士兵,每名士兵的兵种是 到 中的一个整数。
你需要在每个空格中安排一名士兵,其兵种可以任意选择。已经驻扎的士兵及其兵种不能改变。
安排完成后,每两个共用一条边的格子上的士兵必须属于不同兵种。求合法安排的方案数,对 取模。若无法完成合法安排,输出 。
输入格式
第一行包含两个整数 。
第二行包含 个整数,依次描述第一行的格子。第三行包含 个整数,依次描述第二行的格子。
每个整数为 时,表示该格为空;否则表示该格已有士兵的兵种。
输出格式
输出一个整数,表示合法安排的方案数对 取模后的值。
数据范围
所有数据满足 、;描述格子的每个整数均在 到 之间。
子任务
| 编号 | 分值 | 缩减范围 | 附加限制 |
|---|---|---|---|
| 1 | 10 | — | |
| 2 | |||
| 3 | 25 | 不存在一列驻扎了两个士兵。 第二行没有已驻扎的士兵。 第一列和最后一列均有已驻扎的士兵。 |
|
| 4 | 15 | 不存在一列驻扎了两个士兵。 第一列和最后一列均有已驻扎的士兵。 |
|
| 5 | 第一列和最后一列均有已驻扎的士兵。 | ||
| 6 | 5 | — | |
| 7 | 20 | — |
样例 1
3 5
1 0 1
0 0 0
172
样例 2
5 7
1 0 0 0 2
0 0 3 0 0
116370
样例 3
10 13
0 2 0 0 1 0 2 0 0 3
0 1 0 1 0 0 0 0 4 0
770175525