AT_jsc2025_final_c Prefix Bounding Box, Mod, Minimize
题目描述
给定正整数 $N, M$ 和素数 $P$,以及 $Y = (Y_1, Y_2, \dots, Y_N)$,它是 $1$ 到 $N$ 的一个全排列。
对于 $1$ 到 $N$ 的一个全排列 $X = (X_1, X_2, \dots, X_N)$,定义函数 $f(X)$ 如下:
- 对于所有 $2 \leq k \leq N$ 的整数,定义 $B_k$ 为以下值:
- 对于集合 $S=\{(X_1,Y_1),(X_2,Y_2),\dots,(X_k,Y_k)\}$,在二维平面上画出这些点,取覆盖 $S$ 的、边与 $x$ 轴平行的最小面积的矩形,即集合 $S$ 的最小“包围盒”,记这个矩形面积模 $M$ 的余数为 $B_k$。
- $f(X) = \max(B_2, B_3, \dots, B_N)$
请你计算满足 $f(X)$ 最小的 $X$ 的个数,并对 $P$ 取模。
现在有 $T$ 组测试数据,请分别作答。
“包围盒”是指:对于给定点集 $S$,找一个边与坐标轴平行的最小矩形,恰好包含 $S$ 的所有点,且面积最小。
输入格式
输入通过标准输入给出,格式如下:
> $T$
> 每组测试包含:$N$ $M$ $P$
> $Y_1$ $Y_2$ … $Y_N$
输出格式
输出 $T$ 行。
第 $i$ 行输出第 $i$ 个测试用例,$f(X)$ 取得最小值的 $X$ 的个数,对 $P$ 取余。
说明/提示
### 样例解释 1
对于第 $1$ 组测试,例如 $X = (3,1,4,2)$ 时,$(B_2, B_3, B_4) = (2, 0, 3)$,因此 $f(X) = 3$。$f(X)$ 的最小值是 $3$,满足 $f(X) = 3$ 的 $X$ 有 $12$ 个。
对于第 $2$ 组测试,对于所有 $X$,都有 $f(X) = 0$,因此答案为 $13!$ 对 $P=10007$ 取余。
### 数据范围
- $1 \leq T \leq 100$
- $2 \leq N \leq 3000$
- $1 \leq M \leq 10^7$
- $10^4 \leq P \leq 10^9$
- $P$ 是素数
- $Y$ 是 $1$ 到 $N$ 的全排列
- 所有测试用例中 $N$ 的总和不超过 $3000$
- 输入均为整数
由 ChatGPT 5 翻译