AT_agc030_f [AGC030F] Permutation and Minimum
题目描述
有一个长度为 $2N$ 的数列 $A_1,\ A_2,\ ...,\ A_{2N}$。每个 $A_i$ 要么等于 $-1$,要么是 $1$ 到 $2N$ 之间的整数。除了 $-1$ 以外,任意整数在 $A_i$ 中最多只出现一次。
すぬけ君会将所有 $A_i = -1$ 的位置,分别替换成 $1$ 到 $2N$ 的整数,使得最终的 $A_i$ 恰好是 $1,2,\ldots,2N$ 的一个排列。然后,他会构造一个长度为 $N$ 的数列 $B_1,\ B_2,\ ...,\ B_N$,其中 $B_i = \min(A_{2i-1},\ A_{2i})$。
请你求出,所有可能的 $B_1,\ B_2,\ ...,\ B_N$ 的不同取值的个数,并对 $10^9+7$ 取模。
输入格式
输入从标准输入读入,格式如下:
> $N$ $A_1$ $A_2$ $\ldots$ $A_{2N}$
输出格式
输出所有可能的 $B_1,\ B_2,\ ...,\ B_N$ 的不同取值的个数,对 $10^9+7$ 取模。
说明/提示
## 约束条件
- $1 \leq N \leq 300$
- $A_i = -1$ 或 $1 \leq A_i \leq 2N$
- 如果 $A_i \neq -1$ 且 $A_j \neq -1$,则 $A_i \neq A_j$($i \neq j$)
## 样例解释 1
将 ${A_i}$ 补全为 $1,2,\ldots,2N$ 的排列的方法有 $6$ 种,对于每种情况,${B_i}$ 如下:
- $(A_1, A_2, A_3, A_4, A_5, A_6) = (1, 2, 4, 3, 6, 5)$:$(B_1, B_2, B_3) = (1, 3, 5)$
- $(A_1, A_2, A_3, A_4, A_5, A_6) = (1, 2, 5, 3, 6, 4)$:$(B_1, B_2, B_3) = (1, 3, 4)$
- $(A_1, A_2, A_3, A_4, A_5, A_6) = (1, 4, 2, 3, 6, 5)$:$(B_1, B_2, B_3) = (1, 2, 5)$
- $(A_1, A_2, A_3, A_4, A_5, A_6) = (1, 4, 5, 3, 6, 2)$:$(B_1, B_2, B_3) = (1, 3, 2)$
- $(A_1, A_2, A_3, A_4, A_5, A_6) = (1, 5, 2, 3, 6, 4)$:$(B_1, B_2, B_3) = (1, 2, 4)$
- $(A_1, A_2, A_3, A_4, A_5, A_6) = (1, 5, 4, 3, 6, 2)$:$(B_1, B_2, B_3) = (1, 3, 2)$
因此,不同的 $(B_1, B_2, B_3)$ 有 $5$ 种。
由 ChatGPT 4.1 翻译