AT_agc030_f.[AGC030F] Permutation and Minimum

NOI/NOI+/CTSC

通过率:0%

AC君温馨提醒

该题目为【atcoder】题库的题目,您提交的代码将被提交至atcoder进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

有一个长度为 2N2N 的数列 A1, A2, ..., A2NA_1,\ A_2,\ ...,\ A_{2N}。每个 AiA_i 要么等于 −1-1,要么是 11 到 2N2N 之间的整数。除了 −1-1 以外,任意整数在 AiA_i 中最多只出现一次。

すぬけ君会将所有 Ai=−1A_i = -1 的位置,分别替换成 11 到 2N2N 的整数,使得最终的 AiA_i 恰好是 1,2,…,2N1,2,\ldots,2N 的一个排列。然后,他会构造一个长度为 NN 的数列 B1, B2, ..., BNB_1,\ B_2,\ ...,\ B_N,其中 Bi=min⁡(A2i−1, A2i)B_i = \min(A_{2i-1},\ A_{2i})。

请你求出,所有可能的 B1, B2, ..., BNB_1,\ B_2,\ ...,\ B_N 的不同取值的个数,并对 109+710^9+7 取模。

输入格式

输入从标准输入读入,格式如下:

NN A1A_1 A2A_2 …\ldots A2NA_{2N}

输出格式

输出所有可能的 B1, B2, ..., BNB_1,\ B_2,\ ...,\ B_N 的不同取值的个数,对 109+710^9+7 取模。

输入输出样例

  • 输入#1

    3
    1 -1 -1 3 6 -1

    输出#1

    5
  • 输入#2

    4
    7 1 8 3 5 2 6 4

    输出#2

    1
  • 输入#3

    10
    7 -1 -1 -1 -1 -1 -1 6 14 12 13 -1 15 -1 -1 -1 -1 20 -1 -1

    输出#3

    9540576
  • 输入#4

    20
    -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 6 -1 -1 -1 -1 -1 7 -1 -1 -1 -1 -1 -1 -1 -1 -1 34 -1 -1 -1 -1 31 -1 -1 -1 -1 -1 -1 -1 -1

    输出#4

    374984201

说明/提示

约束条件

  • 1≤N≤3001 \leq N \leq 300
  • Ai=−1A_i = -1 或 1≤Ai≤2N1 \leq A_i \leq 2N
  • 如果 Ai≠−1A_i \neq -1 且 Aj≠−1A_j \neq -1,则 Ai≠AjA_i \neq A_j(i≠ji \neq j)

样例解释 1

将 Ai{A_i} 补全为 1,2,…,2N1,2,\ldots,2N 的排列的方法有 66 种,对于每种情况,Bi{B_i} 如下:

  • (A1,A2,A3,A4,A5,A6)=(1,2,4,3,6,5)(A_1, A_2, A_3, A_4, A_5, A_6) = (1, 2, 4, 3, 6, 5):(B1,B2,B3)=(1,3,5)(B_1, B_2, B_3) = (1, 3, 5)
  • (A1,A2,A3,A4,A5,A6)=(1,2,5,3,6,4)(A_1, A_2, A_3, A_4, A_5, A_6) = (1, 2, 5, 3, 6, 4):(B1,B2,B3)=(1,3,4)(B_1, B_2, B_3) = (1, 3, 4)
  • (A1,A2,A3,A4,A5,A6)=(1,4,2,3,6,5)(A_1, A_2, A_3, A_4, A_5, A_6) = (1, 4, 2, 3, 6, 5):(B1,B2,B3)=(1,2,5)(B_1, B_2, B_3) = (1, 2, 5)
  • (A1,A2,A3,A4,A5,A6)=(1,4,5,3,6,2)(A_1, A_2, A_3, A_4, A_5, A_6) = (1, 4, 5, 3, 6, 2):(B1,B2,B3)=(1,3,2)(B_1, B_2, B_3) = (1, 3, 2)
  • (A1,A2,A3,A4,A5,A6)=(1,5,2,3,6,4)(A_1, A_2, A_3, A_4, A_5, A_6) = (1, 5, 2, 3, 6, 4):(B1,B2,B3)=(1,2,4)(B_1, B_2, B_3) = (1, 2, 4)
  • (A1,A2,A3,A4,A5,A6)=(1,5,4,3,6,2)(A_1, A_2, A_3, A_4, A_5, A_6) = (1, 5, 4, 3, 6, 2):(B1,B2,B3)=(1,3,2)(B_1, B_2, B_3) = (1, 3, 2)

因此,不同的 (B1,B2,B3)(B_1, B_2, B_3) 有 55 种。

由 ChatGPT 4.1 翻译

输入解题思路,AI测评打分。不知道怎么写?

首页