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 翻译