P16661 [GKS 2018 #H] Let Me Count The Ways
题目描述
为了庆祝 Googleland 的周年纪念,$N$ 对夫妇将乘坐一条划艇出游。这条划艇很长,但宽度只够一人,因此人们会从前到后坐成一排。
然而,在一次试航中,船并没有移动!经过调查,主办方发现有些新婚夫妇并没有在划船,而是一直在给对方写情诗。具体来说,有 $M$ 对新婚夫妇。如果一对新婚夫妇的两人相邻而坐,他们会忙于写诗而不会划船。
现在主办方找到了你——Googleland 最聪明的人,问你:有多少种可能的方式将这 $2N$ 个人安排在划艇上,使得对于每对新婚夫妇,两人的座位都不相邻?如果两种安排在船上的某个位置坐的人不同,则视为不同的方式。注意,在计数时,一对夫妇中的两个人不被视为可互换的。由于答案可能非常大,主办方只想知道结果对 $1000000007\ (10^9+7)$ 取模的值。
输入格式
输入的第一行给出测试用例的数量 $T$。接下来有 $T$ 个测试用例。每个测试用例由一行两个整数 $N$ 和 $M$ 组成,含义如上所述。
输出格式
对于每个测试用例,输出一行,格式为 `Case #x: y`,其中 $x$ 是测试用例编号(从 $1$ 开始),$y$ 是可能的安排数对 $1000000007\ (10^9+7)$ 取模的结果。
说明/提示
对于每个测试用例,输出一行,格式为 `Case #x: y`,其中 $x$ 是测试用例编号(从 $1$ 开始),$y$ 是可能的安排数对 $1000000007\ (10^9+7)$ 取模的结果。
```
ABab ABba AbaB AbBa
aBAb aBbA abAB abBA
BAba BabA bABa baBA
```
在样例 #2 中,两对夫妇都是新婚夫妇,因此 A 和 a 不能相邻,B 和 b 也不能相邻。它们可以排列成以下 $8$ 种方式:
```
ABab AbaB aBAb abAB
BAba BabA bABa baBA
```
### 限制条件
$1 \le T \le 100$。
**小数据集(测试集 1 – 可见)**
$1 \le M \le N \le 100$。
**大数据集(测试集 2 – 隐藏)**
$1 \le M \le N \le 100000$。
翻译由 DeepSeek V4 Pro 完成