QOJ.ac

QOJ

Time Limit: 10 s - 30 s Memory Limit: 1024 MB Total points: 27

#5982. 营地组合学

Statistics

“夏天终于到了:是时候放松一下,找点乐子,去户外享受美好的天气了!”Alice 说道。她是一位非常敬业的护林员,在一家受欢迎的国家公园工作。夏天期间,许多家庭会抽出时间来这里露营,度过愉快的时光,而接待游客正是 Alice 的工作。

Alice 负责公园内众多营地中的一个。营地可以描述为一个 $N \times N$ 的矩阵,其中每个单元格最多只能容纳一个帐篷。为了安排营地中的家庭,Alice 需要遵守以下几项规定:

  • 营地只允许 1、2 或 3 人的家庭入住。此外,每个帐篷只能容纳一个家庭的成员,且家庭成员不能分散在多个帐篷中。
  • 出于安全考虑,Alice 不希望行或列过于拥挤或过于空旷,因此她要求每行和每列恰好有 3 名成员。
  • 此外,根据公园的安全政策,任何行或列中的帐篷数量不得超过 2 个。

此外,Alice 事先知道至少会有 $X$ 个三口之家来访,并且会有足够的一口之家或两口之家来填满营地的其余部分。

例如,以下是 $N = 3$ 且 $X = 0$ 时的有效安排:

1  2  0  |  3  0  0
0  1  2  |  0  1  2
2  0  1  |  0  2  1

以下是 $N = 3$ 且 $X = 1$ 时的无效安排:

1  2  0  |  0  3  0  |  1  2  0  |  1  1  1
0  1  2  |  3  0  0  |  0  2  0  |  1  1  1
2  0  1  |  0  0  0  |  2  0  1  |  1  1  1
  • 第一个安排无效,因为应该至少有一个三口之家。
  • 第二个例子无效,因为第三行(和第三列)的人数不是 3。
  • 第三个例子无效,因为第二列的人数超过了 3(且第二行的人数少于 3)。
  • 最后一个例子中,每行或每列的帐篷数量超过了 2 个。

最后,Alice 喜欢让事情变得有趣。她想知道在给定 $N$ 和 $X$ 的情况下,有多少种不同的安排方式。

如果两个安排 A 和 B 中,某个单元格在一个安排中有帐篷而另一个没有,或者两个安排中同一单元格都有帐篷但人数不同,则认为这两个安排是不同的。

输入格式

输入的第一行包含 $T$,即测试用例的数量。接下来是 $T$ 个测试用例。每个测试用例由一行组成,包含两个整数 $N$ 和 $X$,分别对应 Alice 营地的行数(和列数)以及最少需要的三口之家的数量。

输出格式

对于每个测试用例,输出一行 "Case #X: Y",其中 X 是测试用例编号(从 1 开始),Y 是可能的安排数量。

答案可能非常大,请将答案对 $10^9 + 7$ 取模。

数据范围

$1 \le T \le 200$。

$0 \le X \le N$。

小数据范围

$1 \le N \le 20$。

大数据范围

$1 \le N \le 10^6$。

样例

样例输入 1

3
2 2
3 1
15 0

样例输出 1

Case #1: 2
Case #2: 24
Case #3: 738721209

说明

在案例 #1 中,有两种不同的有效安排:

0 3  |  3 0
3 0  |  0 3

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.