QOJ.ac

QOJ

حد الوقت: 1.0 s حد الذاكرة: 256 MB مجموع النقاط: 100 قابلة للهجوم ✓

#12929. 禁止相交

الإحصائيات

考虑一个 $N \times N$ 的棋盘。棋盘上有 $K \le N$ 个棋子。这些棋子最初放置在棋盘顶部的某些方格中。

位于方格 $(r, c)$ 的棋子可以向右移动一格到 $(r, c + 1)$,或者向下移动一格到 $(r + 1, c)$。

你的任务是计算有多少种不同的方式将所有棋子移动到棋盘底部的给定位置,使得任意两个不同棋子的路径没有公共方格。如果存在某个棋子在两种方式中经过的路径不同,则认为这两种方式是不同的。由于方案数可能非常大,请输出其对 $10^9 + 7$ 取模的结果。

输入格式

第一行包含一个整数 $T$,表示测试用例的数量 ($1 \le T \le 400$)。

每个测试用例的第一行包含两个整数 $N$ 和 $K$,分别表示棋盘的大小和棋子的数量 ($1 \le N \le 10^5, 1 \le K \le 100$)。

第二行包含 $K$ 个整数 $a_1, a_2, \dots, a_K$,表示棋子的初始位置 ($1 \le a_1 < a_2 < \dots < a_K \le N$)。形式化地,棋子最初位于方格 $(1, a_1), (1, a_2), \dots, (1, a_K)$。

第三行包含 $K$ 个整数 $b_1, b_2, \dots, b_K$,表示棋子的最终位置 ($1 \le b_1 < b_2 < \dots < b_K \le N$)。形式化地,棋子最终应移动到 $(N, b_1), (N, b_2), \dots, (N, b_K)$。

所有测试用例中 $N$ 的总和不超过 $2 \cdot 10^7$。 所有测试用例中 $K$ 的总和不超过 $2 \cdot 10^4$。

输出格式

输出 $T$ 行,每行对应一个测试用例。每行必须包含移动棋子的不同方案数,对 $10^9 + 7$ 取模。

样例

样例输入 1

1
5 2
1 2
3 4

样例输出 1

50

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.