首页 > 其他分享 >【学习笔记】LGV引理

【学习笔记】LGV引理

时间:2023-04-15 09:22:46浏览次数:51  
标签:... int inv 路径 笔记 while quad 引理 LGV

令$ w(P) $表示路径 $ P$ 的所有边权之积,\(e(u,v)\) 表示所有 \(u\) 到 \(v\) 的路径 \(w(P)\) 之和,令:

\[M= \begin{bmatrix} e(A_1,B_1) \quad e(A_1,B_2) \quad ... \quad e(A_1,B_n) \\ e(A_2,B_1) \quad e(A_2,B_2) \quad ... \quad e(A_2,B_n) \\ ... \\ e(A_n,B_1) \quad e(A_n,B_2) \quad ... \quad e(A_n,B_n) \end{bmatrix} \]

\(M\) 的行列式即为所有从 \(A_i\) 到 \(B_i\) 的路径不交的所有方案个数。
感性理解:如果两条路径相交,那么将相交点后的路径交换两条路径仍然相交,但在行列式中逆序对中的奇偶性变化,两者路径相加值为0 。于是之剩下不交的路径。
详细证明见 oiwiki。
关于 $ w(P) $ 的理解:

  • 路径计数时此边能/否走即赋值为1/0,即 \(e(u,v)\) 表示所有 \(u\) 到 \(v\) 的路径条数。
  • 生成函数?长大后再学习吧!

luogu模板题

点击查看代码
#include<bits/stdc++.h>
using namespace std;
#define int long long
inline int rd(){
	int f=1,j=0;
	char w=getchar();
	while(!isdigit(w)){
		if(w=='-')f=-1;
		w=getchar();
	}
	while(isdigit(w)){
		j=j*10+w-'0';
		w=getchar();
	}
	return f*j;
}
const int N=1000010,M=2000000,K=110;
const int mod=998244353;
int fps[M+10],inv[M+10];
inline int C(int x,int y){return (x<0||y<0||x<y)?0:fps[x]*inv[y]%mod*inv[x-y]%mod;}
inline int pw(int x,int y){
	int ansn=1;
	while(y){
		if(y&1)ansn=ansn*x%mod;
		x=x*x%mod,y/=2;
	}
	return ansn;
}
int n,m,a[K],b[K];
int f[K][K];
void pri(){
	for(int i=1;i<=m;i++){
		for(int j=1;j<=m;j++)cout<<f[i][j]<<" ";
		cout<<"\n";
	}
	cout<<"\n";
	return ;
}
void work(){
	n=rd(),m=rd();
	for(int i=1;i<=m;i++)a[i]=rd(),b[i]=rd();
	for(int i=1;i<=m;i++){
		for(int j=1;j<=m;j++){
			f[i][j]=(a[i]>b[j])?0:C(n-1+b[j]-a[i],b[j]-a[i]);
//			cout<<i<<" "<<j<<":"<<n-1+b[j]-a[i]<<" "<<b[j]-a[i]<<"-"<<C(n-1+b[j]-a[i],b[j]-a[i])<<":"<<f[i][j]<<"\n";
//			cout<<f[i][j]<<" ";
		}
//		cout<<"\n";
	}
	int k=1;
	for(int i=1;i<m;i++){
//		cout<<"wk:"<<i<<"\n";
//		pri();
		int p;
		for(p=i;p<=m;p++)if(f[p][i])break;
		if(p==m+1){
			printf("0\n");
			return ;
		}
		swap(f[p],f[i]),k*=-1;
		for(int j=i+1;j<=m;j++){
			if(!f[j][i])continue;
			
			p=f[j][i]*pw(f[i][i],mod-2)%mod;
			for(int o=i;o<=m;o++)f[j][o]-=f[i][o]*p%mod,f[j][o]=(f[j][o]+mod)%mod;
			
		}
	}
	for(int i=1;i<=m;i++)k=k*f[i][i]%mod;
	printf("%lld\n",abs(k));
	return ;
}
signed main(){
	fps[0]=inv[0]=1;
	for(int i=1;i<=M;i++)fps[i]=fps[i-1]*i%mod;
	inv[M]=pw(fps[M],mod-2);
	for(int i=M-1;i>=1;i--)inv[i]=inv[i+1]*(i+1)%mod;
	int T=rd();
	while(T--)work();
	return 0;
}

标签:...,int,inv,路径,笔记,while,quad,引理,LGV
From: https://www.cnblogs.com/T-water/p/17320513.html

相关文章

  • AirNet使用笔记5
    1、DBM“升级工具”,“InstallPosition”之后“UpdatePosition”失败;“ShowLog”提示:/home/cdatc/InstallTK/copyAirNet:errorwhileloadingsharedlibraries:libQtXml.so.4:cannotopensharedobjectfile:Nosuchfileordirectory原因:/usr/lib64下缺少以下3个libQt*......
  • 阅读笔记四月第一篇
    一个理想的设计的特征这一章我主要了解了一个理想设计的特征,书中是这样说的: 一个理想的设计的特征是怎样的呢? 他们有一些共同的特征,这里罗列里一些,虽然都是一个一个的点,但你可以以此针对你做出的设计一一对照一下。1)最小的复杂度:你的设计得很容易看懂,很清晰明了,而不是自作......
  • Nacos笔记(二):Nacos的应用
    Nacos官网:https://nacos.io/zh-cn/index.html。1、注册中心1.1、项目搭建创建新项目,项目结构如下:  父项目下有两个子项目nacos-9001、nacos-9002。1、POM依赖父项目POM文件:<parent><groupId>org.springframework.boot</groupId><artifactId......
  • Nacos笔记(一):环境搭建
    1、Nacos下载登录Nacos官网:https://github.com/alibaba/nacos/releases,下载Nacos服务及源码,这里下载的是Linux版本:         nacos-server-2.2.0.zip是Windows版本。2、Linux部署单机版Nacos服务将下载的tar.gz上传......
  • 多元函数微积分期中复习复盘笔记
    多元微积分期中目录多元微积分期中极限与连续定义重极限与累次极限的关系例题多元函数的泰勒公式可微、全微分与偏导数向量值函数的可微性标量函数的可微性、全微分与偏导数雅各比矩阵可微与偏导数连续的关系例题方向导数与梯度方向导数梯度方向导数与梯度的关系例题多元复合函数......
  • elk学习笔记-elasticsearh-head插件以及elasticsearch-dump
     测试使用的elasitcsearch版本是6.3nodejs版本10.9linux版本为centos7.9elasicsearh-head插件Head插件是Elasticsearch的图形化界面工具,通过此插件可以很方便的对数据进行增删改查等数据交互操作。在Elasticsearch5.x版本以后,head插件已经是一个独立的WebApp了,所以不需要和Elasti......
  • GAMES101笔记-02
    上节课已知旋转θ角度时用矩阵表示为  那么如果要旋转-θ度,则将θ全部替换为-θ,得到结果为  此时这个矩阵正好与原来矩阵的倒置相同 当一个矩阵的逆等于这个矩阵的转置,将其称为正交矩阵。    三维空间的变换三维空间的旋转操作在三维空间中本身矩阵是3*......
  • MySQL学习笔记-索引
    索引索引(index)是帮助MySQL高效获取数据的数据结构(有序)。在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构上实现高级查找算法,这种数据结构就是索引。无索引的查找:全表扫描(将整张表遍历一遍),性能......
  • 运维笔记--玩转Zabbix监控系列
    立个flag,准备更新一套关于Zabbix监控系列的笔记,方便对zabbix感兴趣的同学或者运维小伙伴提供参考。先上个图:内容主要基于zabbix6.0,涉及如下:(一). Zabbix安装-CentOS7.6源码安装Zabbix6.0(二).Zabbix安装-图形界面配置(三). Zabbix安装-字体乱码问题处理(四). Zabbix展......
  • 学习笔记402—Warning: Stopping docker.service, but it can still be activated by:
    执行systemctlstopdocker后提示“Warning:Stoppingdocker.service,butitcanstillbeactivatedby:docker.socket”解释:这是docker在关闭状态下被访问自动唤醒机制,很人性化,即这时再执行任意docker命令会直接启动注:如果真的不希望docker被访问自动唤醒,执行systemct......