luogu#P10216. 【模板】Pfaffian

【模板】Pfaffian

题目背景

称一个长度为 2n2n 的排列 π\pi 是完美匹配,当且仅当其满足

  • 1in,π2i1<π2i\forall 1\le i\le n,\pi_{2i-1}<\pi_{2i}
  • 1i<n,π2i1<π2i+1\forall 1\le i< n,\pi_{2i-1}<\pi_{2i+1}

inv π\textup{inv }\pi 表示 π\pi 的逆序对数,sgn π=(1)inv π\textup{sgn }\pi=(-1)^{\textup{inv }\pi}M2n\mathfrak{M}_{2n} 表示全体长度为 2n2n 的完美匹配构成的集合。

A=(ai,j)1i<j2n\mathbf{A}=(a_{i,j})_{1\le i<j\le 2n} 是一个反对称矩阵,定义 A\mathbf{A}Pfaffian\text{Pfaffian}

$$\textup{Pf}(\mathbf{A})=\sum\limits_{\pi\in\mathfrak{M}_{2n}}(\textup{sgn }\pi)\prod\limits_{i=1}^{n}a_{\pi(2i-1),\pi(2i)} $$

题目描述

给定偶数 nn 与反对称矩阵 A=(ai,j)1i<jn\mathbf{A}=(a_{i,j})_{1\le i<j\le n},求 Pf(A)\textup{Pf}(\mathbf{A})109+710^9+7 取模的结果。

输入格式

第一行一个正整数 nn,保证 nn 是偶数。

接下来 n1n-1 行,第 ii 行有 nin-i 个非负整数,其中第 jj 个整数表示 ai,i+ja_{i,i+j}

输出格式

一行一个非负整数,表示答案。

4
1 2 3
4 5
6
8

提示

对于 30%30\% 的数据,n10n\le 10

对于 100%100\% 的数据,2n5002\leq n\le 5000ai,j<109+70\le a_{i,j}<10^9+7