您的位置:首页 > 其它

[JZOJ4378] 八卦天盘

2016-03-10 20:20 786 查看

Determinant

Definition

现在有nn行nn列的方矩阵AA,它可以写成

A=⎡⎣⎢⎢⎢⎢⎢a1,1a2,1⋮an,1a1,2a2,2⋮an,2……⋱…a1,na2,n⋮an,n⎤⎦⎥⎥⎥⎥⎥A = \begin{bmatrix} a_{1,1} & a_{1,2} & \dots & a_{1,n} \\
a_{2,1} & a_{2,2} & \dots & a_{2,n} \\
\vdots & \vdots & \ddots & \vdots \\
a_{n,1} & a_{n,2} & \dots & a_{n,n} \end{bmatrix}

记AA矩阵的行列式为det(A)\det(A),可以表示成

∣∣∣∣∣∣∣a1,1a2,1⋮an,1a1,2a2,2⋮an,2……⋱…a1,na2,n⋮an,n∣∣∣∣∣∣∣\begin{vmatrix} a_{1,1} & a_{1,2} & \dots & a_{1,n} \\
a_{2,1} & a_{2,2} & \dots & a_{2,n} \\
\vdots & \vdots & \ddots & \vdots \\
a_{n,1} & a_{n,2} & \dots & a_{n,n} \end{vmatrix}

2×22 \times 2 matrices

∣∣∣acbd∣∣∣=ad−bc\begin{vmatrix} a & b\\c & d \end{vmatrix}=ad - bc

3×33 \times 3 matrices

∣∣∣∣adgbehcfi∣∣∣∣=a∣∣∣ehfi∣∣∣−b∣∣∣dgfi∣∣∣+c∣∣∣dgeh∣∣∣=a(ei−fh)−b(di−fg)+c(dh−eg)=aei+bfg+cdh−ceg−bdi−afh.\begin{align*}
\begin{vmatrix}
a&b&c\\d&e&f\\g&h&i
\end{vmatrix}
& =
a\begin{vmatrix}e&f\\h&i\end{vmatrix}
-b\begin{vmatrix}d&f\\g&i\end{vmatrix}
+c\begin{vmatrix}d&e\\g&h\end{vmatrix} \\
& = a(ei-fh)-b(di-fg)+c(dh-eg) \\
& = aei+bfg+cdh-ceg-bdi-afh.
\end{align*}

n×nn \times n matrices

det(A)=∑σ∈Snsgn(σ)∏i=1nai,σi\det(A) = \sum_{\sigma \in S_n} \mathrm{sgn} (\sigma) \prod_{i=1}^n a_{i,\sigma_i}

其中,SnS_n是集合{1,2,…,n}\{1,2,\dots,n\}的所有置换。

sgn\mathrm{sgn}表示置换σ\sigma的奇偶性,当σ\sigma的逆序对数为偶数个时,

sgn(σ)=1\mathrm{sgn}(\sigma)=1,而为奇数个时,sgn(σ)=−1\mathrm{sgn}(\sigma)=-1。

Properties of the determinant

交换矩阵不同两行,行列式值取相反数。

将某行的任意倍加到另一行,行列式值不变。

如果矩阵是上三角矩阵,行列式值等于对角线元素的积。

Problem

Description

给定NN个点MM条边的有向无环图,

另外图中有KK个入度为零的起始点si(si<si+1)s_i(s_i

和KK个出度为零的终止点ti(ti<ti+1)t_i(t_i,

现在要为每个起始点sis_i安排一个终止点tait_{a_i},

每个终止点tait_{a_i}要用且只能用一次,

一个方案合法,当且仅当存在sis_i到tait_{a_i}的路径,且这些路径没有交集。

当排列{an}\{a_n\}的逆序对数为偶数时,该方案贡献为11,否则为−1-1。

问所有方案的贡献和,答案对质数PP取模。

Constraint

N≤6×102N\le 6\times10^2

M≤105M\le 10^5

P≤109+7P\le 10^9+7

Analysis

我们先考虑一个简单点的问题。

K=2K=2且起始点为a1,a2a_1,a_2,终止点为b1,b2b_1,b_2。

记Wu,vW_{u,v}为uu到vv的路径数,

Fu,v,pF_{u,v,p}为路径up,vpup,vp第一次有交集是在点pp的方案数。

因为可行方案只有a1b1,a2b2a_1b_1, a_2b_2或者a1b2,a2b1a_1b_2,a_2b_1,

根据题目贡献的定义,可以得到答案是

−(Wa1,b1⋅Wa2,b2−∑iFa1,a2,i⋅Wi,b1⋅Wi,b2Wa1,b2⋅Wa2,b1−∑iFa1,a2,i⋅Wi,b1⋅Wi,b2)\begin{equation*}
\begin{aligned}
&W_{a_1,b_1}\cdot W_{a_2,b_2} - \sum_i F_{a_1,a_2,i}\cdot W_{i,b_1}\cdot W_{i,b_2} \\
-(&W_{a_1,b_2}\cdot W_{a_2,b_1} - \sum_i F_{a_1,a_2,i}\cdot W_{i,b_1}\cdot W_{i,b_2})
\end{aligned}
\end{equation*}

化简式子,发现答案是

Wa1,b1⋅Wa2,b2−Wa1,b2⋅Wa2,b1W_{a_1,b_1}\cdot W_{a_2,b_2} - W_{a_1,b_2}\cdot W_{a_2,b_1},

这个形式非常的优美,和2×22 \times 2 matrices行列式的公式是相类似的。

然后我们可以试验K=3K=3的情况,也可以对照n×nn \times n matrices行列式公式,

发现答案的形式是和行列式的计算公式是一样的。

那我们利用这个结论,不难得出这道题的解决方式。

算出每对起点终点(s,t)(s,t)间的路径数,这个用简单的拓扑排序就可以解决,

这相当于处理出[K×K][K\times K]的矩阵,然后根据行列式的性质,我们进行高斯消元,从而算出矩阵的行列式。

时间复杂度:O(N(N+M)+K3)O\left(N\left(N+M\right)+K^3\right)。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: