Determinant
Definition
现在有
n
行
记
A
矩阵的行列式为
2×2 matrices
3×3 matrices
n×n matrices
其中,
Sn
是集合
{1,2,…,n}
的所有置换。
sgn
表示置换
σ
的奇偶性,当
σ
的逆序对数为偶数个时,
sgn(σ)=1
,而为奇数个时,
sgn(σ)=−1
。
Properties of the determinant
- 交换矩阵不同两行,行列式值取相反数。
- 将某行的任意倍加到另一行,行列式值不变。
- 如果矩阵是上三角矩阵,行列式值等于对角线元素的积。
Problem
Description
给定
N
个点
另外图中有
K
个入度为零的起始点
和
K
个出度为零的终止点
现在要为每个起始点
si
安排一个终止点
tai
,
每个终止点
tai
要用且只能用一次,
一个方案合法,当且仅当存在
si
到
tai
的路径,且这些路径没有交集。
当排列
{an}
的逆序对数为偶数时,该方案贡献为
1
,否则为
问所有方案的贡献和,答案对质数
P
取模。
Constraint
M≤105
P≤109+7
Analysis
我们先考虑一个简单点的问题。
K=2
且起始点为
a1,a2
,终止点为
b1,b2
。
记
Wu,v
为
u
到
Fu,v,p
为路径
up,vp
第一次有交集是在点
p
的方案数。
因为可行方案只有
根据题目贡献的定义,可以得到答案是
化简式子,发现答案是
Wa1,b1⋅Wa2,b2−Wa1,b2⋅Wa2,b1
,
这个形式非常的优美,和
2×2
matrices行列式的公式是相类似的。
然后我们可以试验
K=3
的情况,也可以对照
n×n
matrices行列式公式,
发现答案的形式是和行列式的计算公式是一样的。
那我们利用这个结论,不难得出这道题的解决方式。
算出每对起点终点
(s,t)
间的路径数,这个用简单的拓扑排序就可以解决,
这相当于处理出
[K×K]
的矩阵,然后根据行列式的性质,我们进行高斯消元,从而算出矩阵的行列式。
时间复杂度: O(N(N+M)+K3) 。