行列式、LGV、矩阵树学习笔记

前置知识:矩阵、高斯消元

行列式

行列式定义

\[\text{det(A)}=\sum_{p}{(-1)^{\mathrm{sgn}(p)}\prod{A_{i,p_i}}} \]

其中 \(\text{sgn}(p)\) 表示排列 \(p\) 的逆序对个数。

行列式性质

  • 进行一次矩阵转职,行列式不变。(易证)
  • 行列式任意一行按比例扩大,行列式的值按同样比例扩大。(易证)
  • 行列式中交换任意两行,行列式反号。(易证)
  • 行列式中若有两行成比例,则行列式值为 \(0\)。(通过第二条证明)
  • 行列式中若有一行可以表示为两个数列相加,则行列式为两个行列式的值的和。(证明如下)
\[\text{det}(A)=\sum_p(-1)^{\mathrm{sgn}(p)}\times(B_{k,p_k}+C_{k,p_k})\times \prod_{i=1}^{n~\text{and}~i\not=k}{a_{i,p_i}}=\mathrm{det}(B)+\mathrm{det}(C) \]

行列式求值

P7112 【模板】行列式求值

根据上面五条性质,可以将矩阵一步步消为左下角全是 \(0\) 的举证,类似于高斯消元。最后将矩阵的对角线乘起来即可。

n=rd(),mod=rd();
for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) a[i][j]=rd()%mod;
for(int i=1;i<=n;i++)
{for(int j=i+1;j<=n;j++){while(a[j][i]){ll tmp=a[i][i]/a[j][i];for(int k=i;k<=n;k++)a[i][k]=(a[i][k]-tmp*a[j][k]%mod+mod)%mod;swap(a[i],a[j]),w=-w;}}
}
for(int i=1;i<=n;i++) ans=ans*a[i][i]%mod;
printf("%lld\n",(mod+w*ans)%mod);

LGV 引理(Lindstrom-Gessel-Viennot lemma)

LGV 引理 内容

  • \(G\) 是一个有限的带权有向无环图。每个顶点的度是有限的,不存在有向环(所以路径数量是有限的)。
  • 起点 \(A=\{a_1,\cdots,a_n\}\),终点 \(B=\{b_1,\cdots,b_n\}\)
  • 每条边 \(e\) 有边权 \(\omega_e\)
  • 对于一个有向路径 \(P\),定义 \(\omega(P)\) 为路径上所有边权的
  • 对任意顶点 \(a,b\),定义 \(e(a,b)=\sum\limits_{P:a \to b}{\omega(P)}\),所有 \(a\)\(b\) 的路径的 \(\omega\) 之和。

设矩阵

\[M={\begin{pmatrix}e(a_{1},b_{1})&e(a_{1},b_{2})&\cdots &e(a_{1},b_{n})\\e (a_{2},b_{1})&e(a_{2},b_{2})&\cdots &e(a_{2},b_{n})\\\vdots &\vdots &\ddots &\vdots \\e(a_{n},b_{1})&e(a_{n},b_{2})&\cdots &e(a_{n},b_{n})\end{pmatrix}} \]

\(A\)\(B\) 的不相交路径组 \(P=(P_1,P_2,\cdots,P_n)\)\(P_i\) 表示从 \(a_i\)\(b_{\sigma(i)}\) 的一条路径,其中 \(\sigma\) 是一个排列(反映了这个排列的映射关系),并且满足对任意 \(i\not=j\)\(P_i\)\(P_j\) 没有公共点。记 \(\sigma(P)\) 表示 \(P\) 对应 \(B\) 的排列。

引理说明,\(M\) 的行列式是所有从 \(A\)\(B\) 的不相交路径 \(P=(P_1,\cdots,P_n)\) 的带符号和。

\[\mathrm{det}(M)=\sum_{P:A\to B}{(-1)^{\mathrm{sgn}(\sigma(P))}\prod_{i=1}^{n}\omega(P_i)} \]

证明

反证法,即只需证明:(其中 \(P:A\rightarrow B\),存在 \(i\not=j\)\(P_i\)\(P_j\) 有交点)

\[\mathrm{det}(M)=\sum_{P:A\rightarrow B}(-1)^{\mathrm{sgn}(\sigma(P))}\prod_{i=1}^{n}{\omega(P_i)}=0 \]

假设存在一个 \(P\),其中 \(P_i\)\(P_j\) 相交,则 \(a_i\rightarrow b_{\sigma(i)}\)\(a_j\rightarrow b_{\sigma(j)}\) 相交。那么我们将 \(b_{\sigma(i)}\)\(b_{\sigma(j)}\) 互换,最后答案不变而奇偶性相反,一定存在 \(P'=-P\)。因此,如果这一组路径有交点,那么一定被抵消,原命题得证。

应用

P6657 【模板】LGV 引理

由于在网格上,如果 \(\sigma\not=(1,2,\cdots,n)\),则显然没有解。

因此直接

\[\text{det}(M)=\sum_{P:A\rightarrow B}{1} \]

构造矩阵,\(e(a_i,b_j)=\binom{b_j-a_i+n-1}{n-1}\) 后求行列式即可。

P7736 [NOI2021] 路径交点

乍一眼好像就是 LGV 模型。

就是每一次的 \(\sigma(P)\) 变为了每一层的点对,但是发现最终的排列方式的逆序对数的奇偶性和中间怎样连接没有关系,所以可以直接 \((-1)^{\mathrm{sgn}(\sigma(P)}\),似乎就做完了。

矩阵树定理

咕咕咕

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/318047.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

P5008-[yLOI2018]锦鲤抄【tarjan】

正题 题目链接:https://www.luogu.com.cn/problem/P5008 题目大意 给出nnn个点mmm条边的一张有向无环图&#xff0c;你每次可以选择一个有入度的点获取其点权然后删除这个点。求能取kkk次的情况下最大能获得的权值和。 1≤n≤51054,1≤m≤210641\leq n\leq 5\times 10^54,1\l…

Hills And Valleys CodeForces - 1467B

Hills And Valleys CodeForces - 1467B 题意&#xff1a; 修改数列中的 一个 数字 使得峰(波峰、波谷)的数量最少 题解&#xff1a; 修改一个数&#xff0c;最多只能影响左右两个数&#xff0c;所能减少的峰的数量为1,2&#xff0c;3三种 分类讨论&#xff0c;对于当前位置…

HttpClient在.NET Core中的正确打开方式

问题来源长期以来&#xff0c;.NET开发者都通过下面的方式发送http请求&#xff1a;using (var httpClient new HttpClient()){var response await httpClient.GetAsync(uri);//do something with response}这段代码理论上来说遵守了C#的最佳实践&#xff0c;HttpClient是IDi…

YBTOJ:炮塔攻击(网络流)

题目描述 小明最近在玩一款很好玩的游戏&#xff0c;游戏规则是这样的&#xff1a; 有一个n∗mn*mn∗m的地图&#xff0c;地图上的每一个位置要么是空地&#xff0c;要么是炮塔&#xff0c;要么是一些敌人&#xff0c;小明需要操纵炮塔攻击敌人。 攻击方法是&#xff1a;对于…

[CQOI]九连环(FFT优化+高精)

文章目录题目题解code题目 九连环是一种源于中国的传统智力游戏。 如图所示&#xff0c;九个的圆环套在一把“剑”上&#xff0c;并且互相牵连。游戏的目标是把九个圆环全部从“剑”上卸下。 圆环的装卸需要遵守两个规则 1&#xff0e;第一个&#xff08;最右边&#xff09;环…

牛客挑战赛53G-同源数组(Easy Version)【NTT】

正题 题目链接:https://ac.nowcoder.com/acm/contest/11193/G 题目大意 给出nnn个长度为mmm的数组&#xff0c;然后你每次可以进行差分&#xff08;不会改变数组长度那种&#xff09;和前缀和。 如果两个数组可以在模998244353998244353998244353意义下操作成同一个数组&…

莫比乌斯反演 做题记录

来自Peterwuyihong 的题单。 前置知识 前置芝士1 数论分块 UVA11526 H(n) P2261 [CQOI2007]余数求和 P2260 [清华集训2012]模积和 其中有一个式子需要注意一下&#xff1a;\[\sum_{i1}^n\sum_{j1}^m\left\lfloor\dfrac{n}{i}\right\rfloor\left\lfloor\dfrac{m}{i}\right\rfloo…

Three Bags CodeForces - 1467C

题意&#xff1a; 三堆石子&#xff0c;你可以取两堆石子各一个石头a,b。然后消掉a&#xff0c;使得bb-a再放入b的那一堆。这样操作直到只剩下一个石子&#xff0c;求该石子价值最大。 题解&#xff1a; 构造题 可以构造出两者情况&#xff1a; 其中两堆都是正的&#xff0…

任正非公开信:投入 20 亿美元全面提升华为软件质量

昨天&#xff0c;华为心声社区发布了来自任正非的公开信《全面提升软件工程能力与实践&#xff0c;打造可信的高质量产品》&#xff0c;信中强调从基础代码做起&#xff0c;全面提升华为软件工程能力和实践&#xff0c;其中提到一些重要举措&#xff0c;包括编码质量、架构设计…

YBTOJ洛谷P2223:软件开发(费用流)

文章目录题目描述解析代码题目描述 某软件公司正在规划一项nnn天的软件开发计划&#xff0c;根据开发计划第iii天需要nin_ini​个软件开发人员&#xff0c;为了提高软件开发人员的效率&#xff0c;公司给软件人员提供了很多的服务&#xff0c;其中一项服务就是要为每个开发人员…

高维前缀和

高维前缀和 主要内容 昨天(\(\texttt{2022.2.28}\))打 ARC 的 D 题时&#xff0c;恍然发现我不会高维前缀和&#xff0c;匆匆来学一下。 比如二维前缀和 \(s_{i,j}\) 表示在一个二维平面上从 \((1,1)\) 到 \((i,j)\) 的所有点的权值之和&#xff0c;我们定义高维前缀和 \(s_{p_…

P3577-[POI2014]TUR-Tourism【状压dp】

正题 题目链接:https://www.luogu.com.cn/problem/P3577 题目大意 给出nnn个点mmm条边的一张图&#xff0c;每个点有费用CiC_iCi​&#xff0c;求选出费用和最小的点使得每个点都至少有一个相邻的点&#xff08;或自己&#xff09;被选择。保证图上不存在超过101010个点的简单…

[指数型生成函数专练]chocolate,红色病毒问题,排列组合,字串数

文章目录T1&#xff1a;chocolate题目题解codeT2&#xff1a;“红色病毒”问题题目题解codeT3&#xff1a;排列组合题目题解codeT4&#xff1a;字串数题解codeT1&#xff1a;chocolate 题目 已帮大家翻译了&#xff0c;不要去UVA或者luogu上面交&#xff0c;卡精度&#xff0…

微服务之:从零搭建ocelot网关和consul集群

介绍微服务中有关键的几项技术&#xff0c;其中网关和服务服务发现&#xff0c;服务注册相辅相成。首先解释几个本次教程中需要的术语网关 Gateway&#xff08;API GW / API 网关&#xff09;&#xff0c;顾名思义&#xff0c;是企业 IT 在系统边界上提供给外部访问内部接口服务…

一起开心寒假训练总复习

文章目录畅通工程题意&#xff1a;题解&#xff1a;代码&#xff1a;小希的迷宫题解&#xff1a;代码&#xff1a;Express Mail Taking题意&#xff1a;题解&#xff1a;代码&#xff1a;Reports题意&#xff1a;题解&#xff1a;代码&#xff1a;放苹果题意&#xff1a;题解&a…

YBTOJ:放置棋子(费用流)

文章目录题目描述解析代码题目描述 有一个n*n的棋盘&#xff0c;可以在上面放棋子。 有些格子不能放棋子&#xff0c;有些格子必须放棋子&#xff0c;剩下的格子随意。 要求放好棋子之后满足如下两条要求&#xff1a; 第 i 行和第 i 列的棋子数目必须一样多。 第 i 行的棋子数…

Prufer 序列

Prufer 序列 定义与建立 Prufer 序列可以将一个带标号 \(n\) 个结点的树用 \([1,n]\) 中的 \(n-2\) 个整数表示。一个无向带标号生成树与数列之间的双射。 对于一棵树&#xff0c;每次我们选择它编号最小的叶子结点&#xff0c;删除它并记录下与它相连的节点的编号&#xff0c;…

CF476D-Dreamoon and Sets【结论】

正题 题目链接:https://www.luogu.com.cn/problem/CF476D 题目大意 求nnn个四元组使得 所有四元组内没有重复的数。四元组内的数字两两之间gcdgcdgcd都为kkk。 要求使得最大的数字最小 1≤n≤10000,1≤k≤1001\leq n\leq 10000,1\leq k\leq 1001≤n≤10000,1≤k≤100 解题思…

使用 WRK 压力测试工具对 ASP.NET Core 的接口进行压力测试

0. 简要介绍WRK 是一款轻量且易用的 HTTP 压力测试工具&#xff0c;通过该工具我们可以方便地对我们所开发的 WebAPI 项目进行压力测试&#xff0c;并且针对测试的情况返回结果。PS&#xff1a;Wrk 并不能针对测试的结果生成动态的图表&#xff0c;如果有这种需要&#xff0c;可…

Codeforces Round #696

Codeforces Round #696 文章目录CF1474A Puzzle From the Future题意&#xff1a;题解&#xff1a;代码&#xff1a;CF1474B Different Divisors题意&#xff1a;题解&#xff1a;代码&#xff1a;CF1474C Array Destruction题意&#xff1a;题解&#xff1a;代码&#xff1a;C…