正题

题目链接:https://www.luogu.com.cn/problem/P7736


题目大意

有kkk层的图,第iii层有nin_ini​个点,每层的点从上到下排列,层从左到右排列。再给出连接相邻层的一些有向边(从iii层连向i+1i+1i+1层)。
对于n1n_1n1​层每个点作为起点同时出发走到不同的nkn_knk​层的点的所有路径方案中,交点数量为偶数的减去为奇数的方案有多少个。

1≤k≤100,2≤n1≤100,n1=nk,n1≤ni≤2×n1,1≤T≤51\leq k\leq 100,2\leq n_1\leq 100,n_1=n_k,n_1\leq n_i\leq 2\times n_1,1\leq T\leq 51≤k≤100,2≤n1​≤100,n1​=nk​,n1​≤ni​≤2×n1​,1≤T≤5


解题思路

分析一下,若第111层起点1,21,21,2分别对应终点1,21,21,2,记fi,1/2f_{i,1/2}fi,1/2​表示1/21/21/2在第iii层的位置。中间某个位置他们路径有了交点,那么一定满足他们存在一层使得fi,1>fi,2f_{i,1}>f_{i,2}fi,1​>fi,2​但是因为f1,1<f1,2f_{1,1}<f_{1,2}f1,1​<f1,2​且fn,1<fn,2f_{n,1}<f_{n,2}fn,1​<fn,2​也就是说明前后都各有一个交点。
拓展一下也就是说中间的路径走法不影响交点的奇偶性,只有起点和终点会影响奇偶性。再进一步说,路径交点的奇偶性就是起点对应终点的排列pip_ipi​的逆序对数量的奇偶性。

设排列ppp表示起点iii会走到终点pip_ipi​,σ(p)\sigma(p)σ(p)表示排列ppp的逆序对数量,w(p)w(p)w(p)表示排列ppp的路径方案
那么答案就是
∑(−1)σ(p)w(p)\sum (-1)^{\sigma(p)}w(p)∑(−1)σ(p)w(p)
发现和LGVLGVLGV引理的式子一模一样,直接上就好了

时间复杂度O(T(k2n+n3))O(T(k^2n+n^3))O(T(k2n+n3))


code

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cctype>
#include<vector>
#define ll long long
using namespace std;
const ll N=210,P=998244353;
ll T,k,n[N],m[N],f[N][N],a[N][N];
vector<int> G[N][N];
ll read(){ll x=0,f=1;char c=getchar();while(!isdigit(c)){if(c=='-')f=-f;c=getchar();}while(isdigit(c)){x=(x<<1)+(x<<3)+c-'0';c=getchar();}return x*f;
}
ll power(ll x,ll b){ll ans=1;while(b){if(b&1)ans=ans*x%P;x=x*x%P;b>>=1;}return ans;
}
ll det(ll n){ll ans=1,f=1;for(ll i=1;i<=n;i++){for(ll j=i;j<=n;j++)if(a[j][i]){if(j!=i)swap(a[j],a[i]),f=!f;break;}ll inv=power(a[i][i],P-2);ans=ans*a[i][i]%P;for(ll j=i;j<=n;j++)a[i][j]=a[i][j]*inv%P;for(ll j=i+1;j<=n;j++){ll rate=P-a[j][i];for(ll k=i;k<=n;k++)(a[j][k]+=rate*a[i][k]%P)%=P;}}return f?ans:((P-ans)%P);
}
signed main()
{T=read();while(T--){k=read();for(ll i=1;i<=k;i++)n[i]=read();for(ll i=1;i<k;i++)m[i]=read();for(ll i=1;i<k;i++){for(ll j=1;j<=m[i];j++){ll x=read(),y=read();G[i][x].push_back(y);}}for(ll i=1;i<=n[k];i++){f[k][i]=1;f[k][i-1]=0;for(ll j=k-1;j>=1;j--)for(ll x=1;x<=n[j];x++){f[j][x]=0;for(ll p=0;p<G[j][x].size();p++)(f[j][x]+=f[j+1][G[j][x][p]])%=P;}for(ll j=1;j<=n[1];j++)a[j][i]=f[1][j];}f[k][n[k]]=0;printf("%lld\n",det(n[1]));for(ll i=1;i<=k;i++)for(ll j=1;j<=n[i];j++)G[i][j].clear();}return 0;
}

P7736-[NOI2021]路径交点【LGV引理】相关推荐

  1. 【luogu P7736】路径交点(LGV引理)(DP)(矩阵乘法)

    路径交点 题目链接:luogu P7736 题目大意 给你一个分层图,第一层和最后一层的点数相同. 然后要从第一层的 n 个点走到最后一层的 n 个点,每个点到达的位置互不相同. 然后问你偶数个交点的 ...

  2. LGV 引理——二维DAG上 n 点对不相交路径方案数

    文章目录 引入 简介 定义 引理 证明 例题 释疑 扩展 引入 有这样一个问题: 甲和乙在一张网格图上,初始位置 (x1,y1),(x2,y2)(x_1,y_1),(x_2,y_2)(x1​,y1​) ...

  3. [NOI2021 day1]轻重边(树链剖分),路径交点(矩阵行列式)

    NOI 2021 day1 轻重边 description solution code 路径交点 description solution code 轻重边 description solution ...

  4. 模板:LGV引理(线性代数)

    所谓LGV引理,就是解决LGV问题的引理. (逃) 前言 上联:古有学完SAM学PAM: 下联:今有学完Polya学LGV: 横批:小清新. 常被用于有向图不交路径计数问题.(废话) 这个东西是真的不 ...

  5. 【2022国赛模拟】无损加密——LGV引理、状压DP

    原创题无来源 题目描述 题解 首先把问题稍作简化,我们可以最后把行列式乘上所有 dkd_kdk​ 的积的 nnn 次方,这样前面的过程就不用考虑 dkd_kdk​ 了,暴力也只需要变动 [lk,rk] ...

  6. 2021牛客暑期多校训练营9 Cells(LGV引理,FFT)

    2021牛客暑期多校训练营9 Cells(LGV引理,FFT) 题目链接 题意 在一个无限大的xyxyxy​坐标轴上,求从A={(0,a1),(0,a2),...,(0,an)}A=\{(0,a_1) ...

  7. 【luogu P6657】【模板】LGV 引理(行列式)(数学)(线性代数)

    [模板]LGV 引理 题目链接:luogu P6657 题目大意 给你一个二维图,然后分别有 m 个棋子,分别要从 (ai,1) 走到 (bi,n),只能从 (x,y) 走到 (x+1,y) 和 (x ...

  8. CF348D LGV引理

    题意: 给定一张图,图上存在障碍点,两个人从(1,1)(1,1)(1,1)出发,只能向上或向右走,走到(n,m)(n,m)(n,m)且路径不相交的方案数 数据范围:1≤n,m≤30001\le n,m ...

  9. 2018牛客多校第一场 Monotonic Matrix (LGV引理)

    链接:https://www.nowcoder.com/acm/contest/139/A 来源:牛客网 题目描述 Count the number of n x m matrices A satis ...

最新文章

  1. 伦敦大学学院开源物体级语义SLAM!支持单/双目+LiDAR!
  2. 89岁屠呦呦再次震惊世界!视频介绍疟疾、青蒿素和背后的故事
  3. sentinel使用(结合gateway)
  4. 简书python爬虫权威_python爬虫 --- 简书评论
  5. 选择结构_标准的switch语句
  6. hybris impex里的小括号语法
  7. 【JavaWeb】XML和Jsoup的相关内容
  8. PHP快速获取MySQL数据库表结构
  9. C开源hash代码uthash的用法总结(1)
  10. 云上“超算中心” 阿里云推出弹性高性能计算平台E-HPC
  11. char*和CString转换
  12. 天大 ACM 1090. City hall
  13. 华为云数据库可视化软件DataStudio导入excel表格问题
  14. 扫雷游戏网页版_两个在线版复古小游戏,嗯还是熟悉的味道!
  15. wps表格错开半行_WPS文字制作左右错行表格(运用插入分节符、分栏等功能)
  16. 冰点还原精灵如何破载?
  17. 电阻式触摸屏的基本结构和驱动原理
  18. unity3d 连接mysql_我学院:Unity3D连接MySql数据库的方法
  19. android 汉子格式转换,拼音转换汉字翻译器
  20. [JavaME]手机玩点对点MSN传情动漫之补充说明

热门文章

  1. python画图比赛_Python选修课第二届Turtle绘图大赛
  2. 马斯克脑机接口_马斯克的脑机接口,让我倍感担忧
  3. 在php中使用kind,KindEditor 4.x在PHP中的应用实例!
  4. docker es持久化_使用docker数据卷对容器数据持久化
  5. python 为什么动态语言图片_聊聊动态语言那些事(Python)
  6. [RabbitMQ]队列持久化
  7. [C++11]shared_ptr共享智能指针的初始化与使用
  8. [Java网络编程基础]网络编程概述,三要素,IP地址
  9. C++ class实现二叉树(完整代码,附非递归遍历)
  10. 高等数学上-赵立军-北京大学出版社-题解-练习2.6