CF2097B.Baggage Claim

提高+/省选-

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

每个机场都有一个行李提取区,Balbesovo 机场也不例外。某天,Sheremetyevo 机场的一位管理员提出了一个不同寻常的想法:将传统的行李传送带形状从旋转盘改为更复杂的形式。

假设行李提取区被表示为一个 n×mn \times m 的矩形网格。管理员提议传送带的路径应穿过单元格 p1,p2,…,p2k+1p_1, p_2, \ldots, p_{2k+1},其中 pi=(xi,yi)p_i = (x_i, y_i)。

对于每个单元格 pip_i 和下一个单元格 pi+1p_{i+1}(其中 1≤i≤2k1 \leq i \leq 2k),这两个单元格必须共享一条公共边。此外,路径必须是简单的,即对于任意两个不同的索引 i≠ji \neq j,单元格 pip_i 和 pjp_j 不能重合。

不幸的是,路径计划被意外洒出的咖啡弄脏了,只保留了路径中奇数索引的单元格:p1,p3,p5,…,p2k+1p_1, p_3, p_5, \ldots, p_{2k+1}。你的任务是给定这些 k+1k+1 个单元格,计算恢复原始完整路径 p1,p2,…,p2k+1p_1, p_2, \ldots, p_{2k+1} 的可能方式的数量。

由于答案可能非常大,请输出其对 109+710^9+7 取模的结果。

输入格式

每个测试包含多个测试用例。第一行输入测试用例数量 tt(1≤t≤3⋅1041 \le t \le 3 \cdot 10^4)。接下来是各测试用例的描述。

每个测试用例的第一行包含三个整数 nn、mm 和 kk(1≤n,m≤10001 \le n, m \le 1000,n⋅m≥3n \cdot m \ge 3,1≤k≤⌊12(nm−1)⌋1 \le k \le \left\lfloor \frac12 (n m - 1) \right\rfloor)—— 网格的尺寸和定义路径长度的参数。

接下来是 k+1k+1 行,第 ii 行包含两个整数 x2i−1x_{2i-1} 和 y2i−1y_{2i-1}(1≤x2i−1≤n1 \le x_{2i-1} \le n,1≤y2i−1≤m1 \le y_{2i-1} \le m)—— 路径上单元格 p2i−1p_{2i-1} 的坐标。

保证所有 (x2i−1,y2i−1)(x_{2i-1}, y_{2i-1}) 对都是不同的。

保证所有测试用例的 n⋅mn \cdot m 之和不超过 10610^6。

输出格式

对于每个测试用例,输出一个整数——恢复原始完整路径的方式数量对 109+710^9+7 取模的结果。

输入输出样例

  • 输入#1

    5
    2 4 2
    1 1
    2 2
    2 4
    1 4 1
    1 1
    1 4
    5 5 11
    2 5
    3 4
    4 5
    5 4
    4 3
    5 2
    4 1
    3 2
    2 1
    1 2
    2 3
    1 4
    3 4 4
    1 2
    2 1
    3 2
    2 3
    3 4
    3 3 2
    2 2
    1 1
    1 3

    输出#1

    2
    0
    2
    5
    1

说明/提示

在第一个测试用例中,有两种可能的路径:

  • (1,1)→(2,1)→(2,2)→(2,3)→(2,4)(1,1) \to (2,1) \to (2, 2) \to (2, 3) \to (2, 4)
  • (1,1)→(1,2)→(2,2)→(2,3)→(2,4)(1,1) \to (1,2) \to (2, 2) \to (2, 3) \to (2, 4)

在第二个测试用例中,没有合适的路径,因为单元格 (1,1)(1,1) 和 (1,4)(1,4) 没有共同的相邻单元格。

翻译由 DeepSeek V3 完成

输入解题思路,AI测评打分。不知道怎么写?

首页