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)。