atcoder#AGC030F. [AGC030F] Permutation and Minimum

[AGC030F] Permutation and Minimum

配点 : 16001600

問題文

長さ 2N2N の数列 A1,A2,...,A2NA_1, A_2, ..., A_{2N} があります. 各 AiA_i1-1 か,あるいは 11 以上 2N2N 以下の整数です. 1-1 以外のどの整数も,Ai{A_i} の中には 11 回までしか現れません.

すぬけ君は,Ai=1A_i = -1 であるような ii それぞれに対して,AiA_i11 以上 2N2N の整数で置き換えて,Ai{A_i}1,2,...,2N1, 2, ..., 2N の並び替えになるようにします. そして,長さ NN の数列 B1,B2,...,BNB_1, B_2, ..., B_N を,Bi=min(A2i1,A2i)B_i = min(A_{2i-1}, A_{2i}) として求めます.

数列 B1,B2,...,BNB_1, B_2, ..., B_N として考えられる異なるものの個数を 109+710^9 + 7 で割ったあまりを求めてください.

制約

  • 1N3001 \leq N \leq 300
  • Ai=1A_i = -1 あるいは 1Ai2N1 \leq A_i \leq 2N
  • Ai1,Aj1A_i \neq -1, A_j \neq -1 ならば AiAjA_i \neq A_j (iji \neq j)

入力

入力は以下の形式で標準入力から与えられる.

NN

A1A_1 A2A_2 ...... A2NA_{2N}

出力

数列 B1,B2,...,BNB_1, B_2, ..., B_N として考えられる異なるものの個数を 109+710^9 + 7 で割ったあまりを出力せよ.

3
1 -1 -1 3 6 -1
5

Ai{A_i}1,2,...,2N1, 2, ..., 2N の並び替えにする方法は 66 通りありますが,そのそれぞれに対して Bi{B_i} は次のようになります:

  • $(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)
  • $(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)
  • $(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)
  • $(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)
  • $(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)
  • $(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,B3B_1, B_2, B_355 個あります.

4
7 1 8 3 5 2 6 4
1
10
7 -1 -1 -1 -1 -1 -1 6 14 12 13 -1 15 -1 -1 -1 -1 20 -1 -1
9540576
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
374984201