[luogu7736]路径交点
对于两条路径,注意到每一个交点都会改变两者的上下关系,因此两条路径交点的奇偶性,仅取决于两者的起点和终点是否改变了上下关系(改变即为奇数)
类似地,对于整个路径方案,令$p_{i}$为以第一层的$i$为起点的路径在第$K$层的终点,那么该方案的交点数的奇偶性,仅取决于$p_{i}$逆序对数(与逆序对数的奇偶性相同)
但注意到方案还有一个限制:不允许经过重复的点
但事实上,当经过了重复的点,显然将之后的两部分交换,恰好会改变$p_{i}$逆序对数的奇偶性
更准确的来说,考虑起点编号最小的两条有公共点的路径,将两者第一个公共点以后的部分交换,显然反过来另一条路径对应的也是原路径,即可以抵消
由此,令$A_{i,j}$表示起点为第一层的$i$且终点为第$K$层的$j$,显然答案即为$A$的行列式,可以$o(n^{3})$求出
关于如何求$A$,令$G_{i}$为第$i$层和第$i+1$层之间的邻接矩阵(大小为$n_{i}\times n_{i+1}$),显然$A=\prod_{i=1}^{k-1}G_{i}$(其中乘法为矩阵乘法),可以$o(kn^{3})$求出
(单组数据)总复杂度为$o(kn^{3})$,可以通过

1 #include<bits/stdc++.h>
2 using namespace std;
3 #define N 205
4 #define mod 998244353
5 #define ll long long
6 int t,K,x,y,ans,n[N],m[N],a[N][N][N],b[N][N],c[N][N];
7 int read(){
8 int x=0;
9 char c=getchar();
10 while ((c<'0')||(c>'9'))c=getchar();
11 while ((c>='0')&&(c<='9')){
12 x=x*10+c-'0';
13 c=getchar();
14 }
15 return x;
16 }
17 int qpow(int n,int m){
18 int s=n,ans=1;
19 while (m){
20 if (m&1)ans=(ll)ans*s%mod;
21 s=(ll)s*s%mod;
22 m>>=1;
23 }
24 return ans;
25 }
26 int guess(int n){
27 int ans=1;
28 for(int i=1;i<=n;i++){
29 int k=-1;
30 for(int j=i;j<=n;j++)
31 if (b[j][i]){
32 k=j;
33 break;
34 }
35 if (k<0)return 0;
36 if (k!=i){
37 ans=mod-ans;
38 for(int j=i;j<=n;j++)swap(b[i][j],b[k][j]);
39 }
40 ans=(ll)ans*b[i][i]%mod;
41 int s=qpow(b[i][i],mod-2);
42 for(int j=i;j<=n;j++)b[i][j]=(ll)b[i][j]*s%mod;
43 for(int j=i+1;j<=n;j++){
44 int s=b[j][i];
45 for(int k=i;k<=n;k++)b[j][k]=(b[j][k]-(ll)s*b[i][k]%mod+mod)%mod;
46 }
47 }
48 return ans;
49 }
50 int main(){
51 t=read();
52 while (t--){
53 K=read();
54 for(int i=1;i<=K;i++)n[i]=read();
55 for(int i=1;i<K;i++)m[i]=read();
56 memset(a,0,sizeof(a));
57 for(int i=1;i<K;i++)
58 for(int j=1;j<=m[i];j++){
59 x=read(),y=read();
60 a[i][x][y]=1;
61 }
62 memset(b,0,sizeof(b));
63 for(int i=1;i<=n[1];i++)b[i][i]=1;
64 for(int t=1;t<K;t++){
65 memset(c,0,sizeof(c));
66 for(int i=1;i<=n[1];i++)
67 for(int j=1;j<=n[t];j++)
68 for(int k=1;k<=n[t+1];k++)c[i][k]=(c[i][k]+(ll)b[i][j]*a[t][j][k])%mod;
69 memcpy(b,c,sizeof(b));
70 }
71 printf("%d\n",guess(n[1]));
72 }
73 return 0;
74 }
[luogu7736]路径交点的更多相关文章
- P7736-[NOI2021]路径交点【LGV引理】
正题 题目链接:https://www.luogu.com.cn/problem/P7736 题目大意 有\(k\)层的图,第\(i\)层有\(n_i\)个点,每层的点从上到下排列,层从左到右排列.再 ...
- canvas判断点是否在路径内
应用场景 我们的项目中有个功能是,canvas上的某个图片选中后可以再这个图片上用鼠标拖拽绘制画笔线条. 当然绘制的边界要控制在图片大小范围内的,那么鼠标是可以随意动的,怎么能控制只在图片上的时候才绘 ...
- LGV 引理——二维DAG上 n 点对不相交路径方案数
文章目录 引入 简介 定义 引理 证明 例题 释疑 扩展 引入 有这样一个问题: 甲和乙在一张网格图上,初始位置 ( x 1 , y 1 ) , ( x 2 , y 2 ) (x_1,y_1),(x_ ...
- CodeForces 590C Three States BFS
Three Statesy 题解: 以3个大陆为起点,都dfs一遍,求出该大陆到其他点的最小距离是多少, 然后枚举每个点作为3个大陆的路径交点. 代码: #include<bits/stdc++ ...
- 2021NOI同步赛
\(NOI\) 网上同步赛 明白了身为菜鸡的自己和普通人的差距 DAY1 \(T1\) 轻重边 [题目描述] 小 W 有一棵 \(n\) 个结点的树,树上的每一条边可能是轻边或者重边.接下来你需要对树 ...
- LGV 引理小记
讲个笑话,NOI 之前某场模拟赛让我知道了这个神奇的科技,于是准备 NOI 之前学完,结果鸽着鸽着就鸽掉了,考 day1 之前一天本来准备花一天时间学的,然后我就开玩笑般地跟自己说,这么 trivia ...
- LGV 引理
(其实是贺的:https://www.luogu.com.cn/paste/whl2joo4) 目录 LGV 引理 不相交路径计数 例题 Luogu6657. [模板]LGV 引理 CF348D Tu ...
- codeforces 8D Two Friends 二分+ 判断三个圆是否有公共交点
题目链接 有两个人x, y, 现在在A点, x要直接去B点, y要先去C点在去B点, 现在给出x, y两人可以行走的最大距离T1, T2, 求出他们从A点出发之后, 可以走的最长的公共路径. 我们先看 ...
- 全局光照:光线追踪、路径追踪与GI技术进化编年史
全局光照(Global Illumination,简称 GI), 作为图形学中比较酷的概念之一,是指既考虑场景中来自光源的直接光照,又考虑经过场景中其他物体反射后的间接光照的一种渲染技术. 大家常听到 ...
随机推荐
- Idea进行java应用的远程调试Remote debugging
本文可以解决如下两个问题: 1.如何处理和调试那些只发生在生产环境(或其他远程环境)而本地开发环境可能没办法重现的"问题". 2.只有一个可以部署的war/jar包,只有class ...
- Data Management Tools(数据管理工具)《一》
数据管理工具 1.LAS数据集 # Process: LAS 数据集统计数据 arcpy.LasDatasetStatistics_management("", "SKI ...
- 试题 历届试题 核桃的数量 java题解
资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 小张是软件项目经理,他带领3个开发组.工期紧,今天都在加班呢.为鼓舞士气,小张打算给每个组发一袋核桃(据传言能补脑).他的要求是: ...
- PTA实验4-2-3 验证“哥德巴赫猜想” (20分)
实验4-2-3 验证"哥德巴赫猜想" (20分) 数学领域著名的"哥德巴赫猜想"的大致意思是:任何一个大于2的偶数总能表示为两个素数之和.比如:24=5+19, ...
- k8s replicaset controller分析(1)-初始化与启动分析
replicaset controller分析 replicaset controller简介 replicaset controller是kube-controller-manager组件中众多控制 ...
- 微信小程序 scroll-view 完成上拉加载更多
我们经常在软件客户端上看到这么一个功能,当我们阅读信息浏览到文章的末尾时,通常会加载出更多的信息.比如,我们在简书客户端上浏览推荐文章时,浏览到屏幕的末尾,此时又加载出了另一页的推荐文章,即实现了上拉 ...
- 一步一步学ROP之linux_x86篇(蒸米spark)
目录 一步一步学ROP之linux_x86篇(蒸米spark) 0x00 序 0x01 Control Flow Hijack 程序流劫持 0x02 Ret2libc – Bypass DEP 通过r ...
- k8s中部署springcloud
安装和配置数据存储仓库MySQL 1.MySQL简介 2.MySQL特点 3.安装和配置MySQL 4.在MySQL数据库导入数据 5.对MySQL数据库进行授权 1.MySQL简介 MySQL 是一 ...
- Mysql基础教程:(七)MySQL基础练习
MySQL基础练习 一.创建student和score表 CREATE TABLE student (id INT(10) NOT NULL PRIMARY KEY ,name VARCHAR(20) ...
- 论文翻译:Fullsubnet: A Full-Band And Sub-Band Fusion Model For Real-Time Single-Channel Speech Enhancement
论文作者:Xiang Hao, Xiangdong Su, Radu Horaud, and Xiaofei Li 翻译作者:凌逆战 论文地址:Fullsubnet:实时单通道语音增强的全频带和子频带 ...