CF1228B Filling the Grid

题目描述

假设有一个 $h \times w$ 的网格,每个格子可以是空的或填满的。我们做如下定义: - $r_{i}$ 表示第 $i$ 行($1 \le i \le h$)从左侧开始连续填满的格子的数量。特别地,如果第 $i$ 行最左侧的格子是空的,则 $r_i=0$。 - $c_{j}$ 表示第 $j$ 列($1 \le j \le w$)从上端开始连续填满的格子的数量。特别地,如果第 $j$ 列最上面的格子是空的,则 $c_j=0$。 换句话说,第 $i$ 行恰好以 $r_i$ 个连续填满的格子开始。类似地,第 $j$ 列恰好以 $c_j$ 个连续填满的格子开始。 ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF1228B/718cfa57d80806dbeecabcc145703169da7deb79.png) 上图是某个 $3 \times 4$ 网格的 $r$ 和 $c$ 值。黑色格子表示填满,白色格子表示空。 现在给定 $r$ 和 $c$ 的值。初始时所有格子都是空的。请你计算有多少种填充格子的方案可以满足 $r$ 和 $c$ 的要求。由于答案可能非常大,请输出答案对 $1000000007\,(10^{9} + 7)$ 取模后的结果。 换句话说,输出答案除以 $1000000007\,(10^{9} + 7)$ 的余数。

输入格式

第一行包含两个整数 $h$ 和 $w$($1 \le h, w \le 10^{3}$),表示网格的高度和宽度。 第二行包含 $h$ 个整数 $r_{1}, r_{2}, \ldots, r_{h}$($0 \le r_{i} \le w$),表示每一行的 $r$ 值。 第三行包含 $w$ 个整数 $c_{1}, c_{2}, \ldots, c_{w}$($0 \le c_{j} \le h$),表示每一列的 $c$ 值。

输出格式

输出满足条件的方案数,对 $1000000007\,(10^{9} + 7)$ 取模后的结果。

说明/提示

在第一个样例中,下面是另一种可能的填充方式。 ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF1228B/9d1150639137da10f3c33f0f1362034ed19afeb9.png) 在第二个样例中,不存在任何一种填充方式可以同时满足给定的 $r$ 和 $c$ 值。 在第三个样例中,记得输出答案对 $(10^9 + 7)$ 取模后的结果。 由 ChatGPT 4.1 翻译