QOJ.ac

QOJ

Time Limit: 2 s Memory Limit: 1024 MB Total points: 100

#16596. 新的邂逅

统计

有 $N$ 对已经分开的夫妻聚集在一起寻找新的伴侣。 每对夫妻由一名男性和一名女性组成,总共有 $N$ 名互不相同的男性和 $N$ 名互不相同的女性。

他们坐在编号为 $1$ 到 $2N$ 的 $2N$ 把椅子上,满足以下条件:

  • 任意两个人不会坐在同一把椅子上;每把椅子上恰好坐着一人。
  • 对于第 $i$ 对已分开的夫妻,男性坐在椅子 $L_i$,女性坐在椅子 $R_i$($1 \le i \le N$)。
  • $1 \le L_i < R_i \le 2N$。
  • 不存在一对 $(i, j)$($1 \le i, j \le N$)使得 $L_i < L_j < R_i < R_j$。

他们想要组成 $N$ 对新的情侣,满足以下条件:

  • 每对新情侣由一名男性和一名女性组成,并且每个人恰好属于一对新情侣。
  • 任何人都不能与其原来的伴侣配对。
  • 对于任意一对新情侣,若男性坐在椅子 $l$,女性坐在椅子 $r$,则必须满足 $l < r$。

例如,考虑 $N = 3$ 且 $(L_1, R_1) = (1, 6)$,$(L_2, R_2) = (2, 3)$,$(L_3, R_3) = (4, 5)$。

  • 坐在椅子 $1$ 的男性和坐在椅子 $6$ 的女性不能组成新情侣,因为他们是原来的夫妻。
  • 坐在椅子 $4$ 的男性和坐在椅子 $3$ 的女性不是原来的夫妻,但他们也不能组成新情侣,因为男性的椅子编号更大。

另一方面:

  • 坐在椅子 $1$ 的男性和坐在椅子 $3$ 的女性可以组成新情侣。
  • 坐在椅子 $2$ 的男性和坐在椅子 $5$ 的女性可以组成新情侣。
  • 坐在椅子 $4$ 的男性和坐在椅子 $6$ 的女性可以组成新情侣。

这样就可以组成满足所有条件的 $3$ 对情侣。

你的任务是计算组成 $N$ 对新情侣的不同方案数。 如果存在至少一对新情侣只出现在两种方案中的某一种里,则认为这两种方案不同。

在上述例子中,可以证明恰好只有一种组成 $3$ 对情侣的方案,因此答案为 $1$。

由于方案数可能非常大,请输出对 $10^9 + 7$ 取模后的结果。

你需要在一次输入中解决 $T$ 组测试数据。

限制

  • 所有给定值均为整数。
  • $1 \le T \le 100$
  • $1 \le N \le 3000$
  • 令 $S$ 为所有测试数据中 $N$ 的总和;$1 \le S \le 3000$
  • $1 \le L_i < R_i \le 2N$($1 \le i \le N$)
  • $L_1, L_2, \ldots, L_N, R_1, R_2, \ldots, R_N$ 两两不同。
  • 不存在一对 $(i, j)$($1 \le i, j \le N$)使得 $L_i < L_j < R_i < R_j$。

子任务

子任务 1(11 分)

  • $N \le 8$,$S \le 800$。

子任务 2(32 分)

  • $N \le 16$,$S \le 1600$。

子任务 3(20 分)

  • $N \le 100$,$S \le 2000$。
  • 不存在三元组 $(i, j, k)$($1 \le i, j, k \le N$)使得 $L_i < L_j < R_i < L_k < R_j < R_k$。

子任务 4(27 分)

  • $N \le 100$,$S \le 2000$。

子任务 5(10 分)

  • 无额外限制。

输入格式

  • 第一行包含一个整数 $T$,表示测试数据组数。
  • 接下来给出 $T$ 组测试数据。
  • 每组测试数据由 $N+1$ 行组成:

    • 第一行包含整数 $N$。
    • 第 $(1+i)$ 行包含两个整数 $L_i$ 和 $R_i$。

输出格式

  • 对于每组测试数据,输出一行答案。

样例数据

样例 1

输入

5
1
1 2
2
1 4
2 3
3
1 6
2 5
3 4
3
1 6
2 3
4 5
4
1 8
5 6
2 7
3 4

输出

0
1
2
1
6

Editorials

IDTypeStatusTitlePosted ByLast UpdatedActions
EditorialOpen Official EditorialQingyu- Download

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.