LGV引理
LGV引理是用来统计DAG中固定若干起点和终点情况下的选择不相交链的方案数的。
同样用来优化计数问题,但是比Pólya定理友好多了,这也就是为什么它能够被直接糊到NOI考场上。
对于一张DAG,每条边有一个边权 \(\omega(e)\) ,我们记一条路径 \(P\) 的权值 \(\omega(P)=\prod\limits_{e\in P}\omega(e)\) ,我们再记点 \(u\) 到点 \(v\) 的所有路径的权值之和为 \(e(u,v)\) 。
设我们有一个起点集合 \(A={a_1,a_2\dots a_k}\) 和一个终点集合 \(B={b_1,b_2\dots b_k}\) ,满足 \(|A|=|B|\) ,我们设 \(P\) 为它的一个选择不相交链的方案,我们同时记 \(t(P)\) 表示将终点按对应起点下标对应得到的排列的逆序对数 。
铺垫了这么多,终于到了LGV引理的主题部分:
对于行列式 \(M=\begin{vmatrix}e(a_1,b_1)&e(a_1,b_2)&\dots&e(a_1,b_k)\\e(a_2,b_1)&e(a_2,b_2)&\dots&e(a_2,b_k)\\\vdots&\vdots&\ddots&\vdots\\e(a_k,b_1)&e(a_k,b_2)&\dots&e(a_k,b_k)\\\end{vmatrix}\) ,我们有 \(\det M=\sum\limits_{P}(-1)^{t(P)}\prod\limits_{P_i\in P}\omega(P_i)\) 。
也就是,我们可以通过求出行列式 \(M\) 的值,来统计不相交链的方案数。
这里给出一个感性的证明:
首先, \(M\) 必然是统计了所有选择 \(k\) 条链的方案(无论是否有相交),假设我们找到其中一种有相交的方案,找到它的一个相交的节点以及在这个点相交的两条链(我们假定已经将所有的节点和链按照一定顺序排序以保证一一对应):
假设我们将这两条链在这个点之后路径交换:
不难发现,这两种情况下的 \(\prod\limits_{P_i\in P}\omega(P_i)\) 是一样的,但 \(t(P)\) 因为交换了排列中的两个数的位置,奇偶性改变。
所以在 \(\det M\) 中,这两项刚好抵消,所以只会剩下不相交的了,也就是右式。
当所有的边权都取 \(1\) 的时候,就是对不相交链方案数的统计了。
例题时间:
P6657 【模板】LGV 引理
发现不相交链选择的情况只有 \(a_i\) 与 \(b_i\) 对应的情况,所以 \(\det M\) 即为答案。
考虑从 \(a_i\) 到 \(b_j\) 有多少种方案:\(e(a_i,b_j)=\begin{cases}\dbinom{n+b_j-a_i}{b_j-a_i}&b_j\geqslant a_i\\0&b_j<a_i\end{cases}\) 。
处理出来即可,最终复杂度为 \(O(n+m^3)\) 。
[NOI2021] 路径交点
考虑当交点数为 \(k\) 的时候, \(P\) 对应排列相对于排列 \(1,2\dots n_1\) 相当于进行了 \(k\) 次相邻两两交换,对答案的贡献和引理中一样,均为 \((-1)^k\) ,用DP维护从每个起点到每个终点的方案数,然后对行列式求值即可,最终复杂度为 \(O(\sum m+n^3)\leqslant O(n^3)\) 。
CF348D Turtles
两只乌龟路径分别为 \((1,2)\rightarrow(n-1,m)\) 和 \((2,1)\rightarrow(n,m-1)\) ,只有符合答案的情况能够做到两两不相交,设 \(S(x_1,y_1,x_2,y_2)\) 为 \((x_1,y_1)\rightarrow(x_2,y_2)\) 的方案数,答案就是 \(\begin{vmatrix}S(1,2,n-1,m)&S(1,2,n,m-1)\\S(2,1,n-1,m)&S(2,1,n,m-1)\end{vmatrix}=S(1,2,n-1,m)S(2,1,n,m-1)-S(1,2,n,m-1)S(2,1,n-1,m)\) ,DP出答案式中的四个值即可,最终复杂度为 \(O(nm)\) 。
[PA2021] Fiolki 2
发现我们需要判断的是一个类似于去 \(k\) 条不相交的链的东西,所以考虑使用 LGV 引理。
因为只需判断是否合法,但是 LGV 是在进行带符号求和,所以考虑对每一条边随机赋一个边权,有解的可以近似等价于行列式的值不为零。
我们记 \(ed_{u,v}\) 表示 DAG 上 \(u\) 到 \(v\) 所有路径上边权积的和(也就是 LGV 要的那个东西)。
但是不一定能够取满 \(k\) 个,记 \(1\dots k\) 号节点到某一个点 \(u,u=k+1\dots n\) 的 \(ed\) 值为一个 \(k\) 维向量 \(\alpha_u=(ed_{1,u},ed_{2,u}\dots ed_{k,u})\) 。
不难发现,\(f(l,r)\) 的值就等价于 \(\alpha_l,\alpha_{l+1}\dots \alpha_r\) 构成的线性基的大小。
考虑使用时间戳线性基维护即可。
LGV引理的更多相关文章
- 2021牛客暑期多校训练营9C-Cells【LGV引理,范德蒙德行列式】
正题 题目链接:https://ac.nowcoder.com/acm/contest/11260/C 题目大意 一个平面上,\(n\)个起点\((0,a_i)\)分别对应终点\((i,0)\),每次 ...
- P7736-[NOI2021]路径交点【LGV引理】
正题 题目链接:https://www.luogu.com.cn/problem/P7736 题目大意 有\(k\)层的图,第\(i\)层有\(n_i\)个点,每层的点从上到下排列,层从左到右排列.再 ...
- LGV 引理小记
讲个笑话,NOI 之前某场模拟赛让我知道了这个神奇的科技,于是准备 NOI 之前学完,结果鸽着鸽着就鸽掉了,考 day1 之前一天本来准备花一天时间学的,然后我就开玩笑般地跟自己说,这么 trivia ...
- LGV 引理
(其实是贺的:https://www.luogu.com.cn/paste/whl2joo4) 目录 LGV 引理 不相交路径计数 例题 Luogu6657. [模板]LGV 引理 CF348D Tu ...
- LGV 引理——二维DAG上 n 点对不相交路径方案数
文章目录 引入 简介 定义 引理 证明 例题 释疑 扩展 引入 有这样一个问题: 甲和乙在一张网格图上,初始位置 ( x 1 , y 1 ) , ( x 2 , y 2 ) (x_1,y_1),(x_ ...
- P6657-[模板]LGV 引理
正题 题目链接:https://www.luogu.com.cn/problem/P6657 题目大意 给出$n\times n$的棋盘,$m$个起点第$i$个为$(1,a_i)$,对应$m$个终点第 ...
- ZROI 暑期高端峰会 A班 Day1 组合计数
AGC036F Square Constriants 一定有 \(l_i<p_i\le r_i\). 考虑朴素容斥,枚举每个数是 \(\le l_i\) 还是 \(\le r_i\).对于 \( ...
- ACM模板_axiomofchoice
目录 语法 c++ java 动态规划 多重背包 最长不下降子序列 计算几何 向量(结构体) 平面集合基本操作 二维凸包 旋转卡壳 最大空矩形 | 扫描法 平面最近点对 | 分治 最小圆覆盖 | 随机 ...
- 【置顶】Trotyl's OI tree
\(\rm thx\):@\(\rm UntilMadow\) ! \(\color{Green}{\rm Pupil}\) :只会一点点 \(\color{blue}{\text{Expert}}\ ...
- NOI2021游记
NOI2021游记 前言 写于 2021.7.28,成绩榜刚出后几个小时.总分 345 拿到银牌 183 名. 我的高中 OI 生活在这里画上句号.结局对我而言虽然不够完美,但是无论怎样都是我人生道路 ...
随机推荐
- CoinBase是什么?
什么是CoinBase交易? 比特币区块链上的每个区块中都会包含一个或者多个交易(transaction),其中第一个交易就叫做CoinBase交易. 什么是CoinBase交易? CoinBase交 ...
- 基于python+django的电影搜索网站-搜索引擎系统设计与实现
该项目是基于python的web类库django开发的一套web网站,给师弟做的课程设计. 本人的研究方向是一项关于搜索的研究项目.在该项目中,笔者开发了一个简单版的搜索网站,实现了对数据库数据的检索 ...
- zookeeper源码(06)ZooKeeperServer及子类
ZooKeeperServer 实现了单机版zookeeper服务端功能,子类实现了更加丰富的分布式集群功能: ZooKeeperServer |-- QuorumZooKeeperServer |- ...
- spring启动流程 (1) 流程概览
本文将通过阅读AnnotationConfigApplicationContext源码,分析Spring启动流程. 创建AnnotationConfigApplicationContext Annot ...
- Oracle数据库期末考试--学堂在线
1.单选题 (2分) 在Oracle数据库中,下面哪类索引最适合SQL范围查找? 2.单选题 (2分) 在创建Oracle数据库表时,下面哪个元素不出现在CREATE TABLE语句中? 3.单选题 ...
- Linux-软件包管理-rpm-yum-apt
- Python学习之十四_Python连接各种数据库的方法(DM,oscar,Oracle,SQLSERVER,MYSQL,PG,Kingbase
Python学习之十四_Python连接各种数据库的方法(DM,oscar,Oracle,SQLSERVER,MYSQL,PG,Kingbase) 前言 想着能够使用多种数据库进行一些操作. 所以本文 ...
- [转帖]TiDB系统调参实战经验
https://tidb.net/blog/c9466c40#TiDB%E7%B3%BB%E7%BB%9F%E8%B0%83%E5%8F%82%E5%AE%9E%E6%88%98%E7%BB%8F%E ...
- [转帖] 请求量突增一下,系统有效QPS为何下降很多?
https://www.cnblogs.com/codelogs/p/17056485.html 原创:扣钉日记(微信公众号ID:codelogs),欢迎分享,转载请保留出处. 简介# 最近我观察到一 ...
- [转贴]Kubernetes之修改NodePort对外映射端口范围
https://www.cnblogs.com/minseo/p/12606326.html k8s默认使用NodePort对外映射端口范围是30000-50000可以通过修改kube-apiserv ...