P3813 [FJOI2017] 矩阵填数

题目描述

给定一个 $h \times w$ 的矩阵,矩阵的行编号从上到下依次为 $1 \sim h$,列编号从左到右依次 $1 \sim w$。 在这个矩阵中你需要在每个格子中填入 $1 \sim m$ 中的某个数。 给这个矩阵填数的时候有一些限制,给定 $n$ 个该矩阵的子矩阵,以及该子矩阵的最大值 $v$,要求你所填的方案满足该子矩阵的最大值为 $v$。 现在,你的任务是求出有多少种填数的方案满足 $n$ 个限制。 两种方案是不一样的当且仅当两个方案至少存在一个格子上有不同的数。由于答案可能很大,你只需要输出答案对 $10 ^ 9 + 7$ 取模后的结果。

输入格式

输入数据的第一行为一个数 $T$,表示数据组数。 对于每组数据,第一行为四个数 $h,w,m,n$。 接下来 $n$ 行,每一行描述一个子矩阵的最大值 v。每行为五个整数 $x_1,y_1,x_2,y_2,v$,表示一个左上角为 $(x_1,y_1)$,右下角为 $(x_2,y_2)$ 的子矩阵的最大值为 $v$。 数据保证满足 $1 \le x_1 \le x_2 \le h, 1 \le y_1 \le y_2 \le w$。

输出格式

对于每组数据输出一行,表示填数方案对 $10^9+7$ 取模后的值。

说明/提示

对于 $20\%$ 的数据,$n \le 2$。 另有 $20\%$ 的数据,$1 \le h, w \le 50$。 对于 $100\%$ 的数据,$T \le 5$,$1 \le h, w, m \le 10 ^ 4$,$1 \le n \le 10$,$1 \le v \le m$。