CF1550D Excellent Arrays

题目描述

我们称一个整数数组 $a_1, a_2, \dots, a_n$ 是“好”的,如果对于每个 $i$,都有 $a_i \neq i$。 定义 $F(a)$ 为满足 $a_i + a_j = i + j$ 的有序对 $(i, j)$ 的数量,其中 $1 \le i < j \le n$。 我们称数组 $a_1, a_2, \dots, a_n$ 是“优秀”的,如果: - $a$ 是“好”的; - 对于每个 $i$,都有 $l \le a_i \le r$; - 在所有长度为 $n$ 的“好”数组中,$F(a)$ 取得最大值。 给定 $n$、$l$ 和 $r$,请计算优秀数组的数量,答案对 $10^9 + 7$ 取模。

输入格式

第一行包含一个整数 $t$($1 \le t \le 1000$),表示测试用例的数量。 每个测试用例包含一行,包含三个整数 $n$、$l$ 和 $r$($2 \le n \le 2 \cdot 10^5$;$-10^9 \le l \le 1$;$n \le r \le 10^9$)。 保证所有测试用例中 $n$ 的总和不超过 $2 \cdot 10^5$。

输出格式

对于每个测试用例,输出优秀数组的数量,对 $10^9 + 7$ 取模。

说明/提示

在第一个测试用例中,可以证明所有“好”数组 $a$ 中最大的 $F(a)$ 等于 $2$。优秀数组有: 1. $[2, 1, 2]$; 2. $[0, 3, 2]$; 3. $[2, 3, 2]$; 4. $[3, 0, 1]$。 由 ChatGPT 4.1 翻译