P7736-[NOI2021]路径交点【LGV引理】
正题
题目链接:https://www.luogu.com.cn/problem/P7736
题目大意
有\(k\)层的图,第\(i\)层有\(n_i\)个点,每层的点从上到下排列,层从左到右排列。再给出连接相邻层的一些有向边(从\(i\)层连向\(i+1\)层)。
对于\(n_1\)层每个点作为起点同时出发走到不同的\(n_k\)层的点的所有路径方案中,交点数量为偶数的减去为奇数的方案有多少个。
\(1\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 5\)
解题思路
分析一下,若第\(1\)层起点\(1,2\)分别对应终点\(1,2\),记\(f_{i,1/2}\)表示\(1/2\)在第\(i\)层的位置。中间某个位置他们路径有了交点,那么一定满足他们存在一层使得\(f_{i,1}>f_{i,2}\)但是因为\(f_{1,1}<f_{1,2}\)且\(f_{n,1}<f_{n,2}\)也就是说明前后都各有一个交点。
拓展一下也就是说中间的路径走法不影响交点的奇偶性,只有起点和终点会影响奇偶性。再进一步说,路径交点的奇偶性就是起点对应终点的排列\(p_i\)的逆序对数量的奇偶性。
设排列\(p\)表示起点\(i\)会走到终点\(p_i\),\(\sigma(p)\)表示排列\(p\)的逆序对数量,\(w(p)\)表示排列\(p\)的路径方案
那么答案就是
\]
发现和\(LGV\)引理的式子一模一样,直接上就好了
时间复杂度\(O(T(k^2n+n^3))\)
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引理】的更多相关文章
- 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_ ...
- 2021牛客暑期多校训练营9C-Cells【LGV引理,范德蒙德行列式】
正题 题目链接:https://ac.nowcoder.com/acm/contest/11260/C 题目大意 一个平面上,\(n\)个起点\((0,a_i)\)分别对应终点\((i,0)\),每次 ...
- P6657-[模板]LGV 引理
正题 题目链接:https://www.luogu.com.cn/problem/P6657 题目大意 给出$n\times n$的棋盘,$m$个起点第$i$个为$(1,a_i)$,对应$m$个终点第 ...
- [luogu7736]路径交点
对于两条路径,注意到每一个交点都会改变两者的上下关系,因此两条路径交点的奇偶性,仅取决于两者的起点和终点是否改变了上下关系(改变即为奇数) 类似地,对于整个路径方案,令$p_{i}$为以第一层的$i$ ...
- NOI2021游记
NOI2021游记 前言 写于 2021.7.28,成绩榜刚出后几个小时.总分 345 拿到银牌 183 名. 我的高中 OI 生活在这里画上句号.结局对我而言虽然不够完美,但是无论怎样都是我人生道路 ...
- NOI2021 去不了记
没错,由于某些 zszz 的原因,我是真的去不了了(指去不了 ZJ) Day -11 ~ -7 - 2021.7.12 - 2021.7.16 令人自闭的 ISIJ 终于结束了----From ycx ...
- NOI2021 同步赛游记
写在前面的话 为什么叫游记呢?因为我第一天是在划水中度过的,错过了对原题的发现. O n e I n D a r k \tt OneInDark OneInDark 无比风光地去了浙江,却倒霉地遇上了 ...
随机推荐
- Intellj IDEA 光标显示insert状态解决办法
使用idea过程中,不知道怎么回事,鼠标的光标老是insert状态,体验效果极其差劲,于是去百度,扒拉了好一阵,过滤了垃圾博客,发现了有两种方法可以解决此问题: 第一种方法: 在File------& ...
- docker 镜像配置
Ubuntu14.04.Debian7Wheezy 对于使用 upstart 的系统而言,编辑 /etc/default/docker 文件,在其中的 DOCKER_OPTS 中配置加速器地址: DO ...
- .Net Core NPOI读取Excel 并转为数据实体类
创建应用程序 这里直接创建Console程序 引用NPOI的NuGet包 PM> Install-Package NPOI -Version 2.5.1 直接Nuget包管理器添加 导入Exce ...
- 使用Spark开发应用程序,并将作业提交到服务器
1.pycharm编写spark应用程序 由于一些原因在windows上配置未成功(应该是可以配置成功的).我是在linux上直接使用pycharm,在linux的好处是,环境可能导致的一切问题不复存 ...
- java 日期格式化-- SimpleDateFormat 的使用。字符串转日期,日期转字符串
日期和时间格式由 日期和时间模式字符串 指定.在 日期和时间模式字符串 中,未加引号的字母 'A' 到 'Z' 和 'a' 到 'z' 被解释为模式字母,用来表示日期或时间字符串元素.文本可以使用单引 ...
- 使用dom4工具:增删改xml文件(七)
package dom4j_write; import java.io.File; import java.io.FileOutputStream; import org.dom4j.Attribut ...
- 30 道 Vue 面试题,内含详细讲解(涵盖入门到精通,自测 Vue 掌握程度)
前言 本文以前端面试官的角度出发,对 Vue 框架中一些重要的特性.框架的原理以问题的形式进行整理汇总,意在帮助作者及读者自测下 Vue 掌握的程度.本文章节结构以从易到难进行组织,建议读者按章节顺序 ...
- Spring BeanDefinition
定义 /** * A BeanDefinition describes a bean instance, which has property values, * constructor argume ...
- 多个mysql同时运行
一.准备 mysql下载地址 https://dev.mysql.com/downloads/mysql/ 1.下载 2.解压缩 3.创建my.ini [Client] port = 3307 [my ...
- Typora代码块配色和标题自带序号的实现代码
Typora代码块配色和标题自带序号的实现代码 先打开主题文件夹 文件>偏好设置>外观>打开主题文件夹 然后编辑base.user.css(如果没有就新建一个)文件 /*标题自动添加 ...