#P14435. [JOISC 2013] 收拾吉祥物 / Mascots

[JOISC 2013] 收拾吉祥物 / Mascots

题目描述

JOI 酱正在和朋友玩吉祥物。快乐的时光转瞬即逝,朋友离开后,现在到了收拾整理的时间。

JOI 酱拥有 R×CR \times C 个吉祥物,收拾时使用一个由 RRCC 列方格组成的长方形区域。每个方格放置一个吉祥物。从上数第 AA 行、从左数第 BB 列的方格记作 (A,B)(A, B)。整理开始时,已有 NN 个方格放置了吉祥物。开始整理时,至少存在一个未放置吉祥物的方格。

JOI 酱逐个放置吉祥物进行整理。当新放置一个吉祥物后,所有有吉祥物的方格恰好构成一个完整的长方形时(排除初始状态已有吉祥物的方格本身就构成一个长方形的情况),JOI 酱会感到 小确幸。所谓所有有吉祥物的方格构成一个完整的长方形,是指存在四个整数 r1,r2,c1,c2r_1, r_2, c_1, c_21r1r2R1 \leq r_1 \leq r_2 \leq R1c1c2C1 \leq c_1 \leq c_2 \leq C),使得对于所有满足 r1ir2r_1 \leq i \leq r_2c1jc2c_1 \leq j \leq c_2 的方格 (i,j)(i, j) 上都有吉祥物,并且其他任何方格上都没有吉祥物。感到 小确幸 的次数越多,JOI 酱今晚就能睡得越香甜。

放置吉祥物时,不区分所放吉祥物的种类。请问,使得 小确幸 次数最大的放置方式共有多少种?

任务

给定收拾吉祥物的区域信息以及初始已放置吉祥物的信息,编写程序计算使得 小确幸 次数最大的放置方式的数量,并对 10000000071\,000\,000\,007 取模后的结果。

输入格式

从标准输入读取以下输入数据:

  • 11 行包含两个以空格分隔的整数 R,CR, CRR 表示放置吉祥物区域的行数,CC 表示列数。
  • 22 行包含一个整数 NNNN 表示整理开始时已放置吉祥物的数量。
  • 后续 NN 行描述初始已放置吉祥物的信息。第 ii 行包含两个以空格分隔的整数 Ai,BiA_i, B_i,表示方格 (Ai,Bi)(A_i, B_i) 在初始时已放置吉祥物。这些数对互不重复。

输出格式

向标准输出输出可能的放置方式的数量对 10000000071\,000\,000\,007 取模后的结果。

2 3
2
1 2
2 2
8
3 3
2
1 1
3 3
5040

提示

样例 1 解释

初始状态下,66 个方格的状态如下(△ 表示初始时已放置吉祥物的方格):

:::align{center} :::

66 个方格中,(1,2)(1, 2)(2,2)(2, 2) 已放置吉祥物。小确幸 次数的最大值为 22

使得 小确幸 次数达到 22 次的放置方式有以下 88 种(数字表示新放置吉祥物的顺序):

:::align{center} :::

在所有这些 88 个示例中,放置第 22 个吉祥物后有吉祥物的方格构成一个 2×22 \times 2 的长方形,放置第 44 个吉祥物后有吉祥物的方格构成一个 2×32 \times 3 的长方形,整个过程 JOI 酱总共感到 22一点幸福

限制

所有输入数据满足以下条件:

  • 2R30002 \leq R \leq 3\,000
  • 2C30002 \leq C \leq 3\,000
  • 1N1000001 \leq N \leq 100\,000

子任务

子任务 1 [10 分]

满足以下条件:

  • R3R \leq 3
  • C3C \leq 3

子任务 2 [30 分]

满足以下条件:

  • R50R \leq 50
  • C50C \leq 50

子任务 3 [60 分]

无额外限制。

翻译由 DeepSeek V3 完成