2025.6.24 NOI 模拟赛

比赛

T1 #P1252. 前来巴结大手子 \(\quad\) P11704 [ROIR 2025] 旅行路线

题意

\(n\times m\) 的矩阵中有 \(k\) 个关键点,选出两条从 \((1,1)\)\((n,m)\) 的不降路径,使得两者除了起点终点外无交点,且经过了每个关键点,求方案数,\(n,m\le10^6,k\le2000\)

分析

显然两条路径分别经过 \((1,2),(n-1,m)\)\((1,2),(n,m-1)\),将这四个点和所有关键点编号(按 \(x+y\) 从小到大排序)

\(f_{i,j}\) 表示两条路径中一条到达 \(i\),一条到达 \(j\)(忽略相交)的方案数,则边界条件为 \(f_{(1,2),(2,1)}=1\)

\((x_i,y_i)\) 为编号 \(i\) 的点,令 \(C(i,j)=\binom{x_j-x_i+y_j-y_i}{x_j-x_i}\),则

\[f_{i,j}\to f_{\max(i,j)+1,j} C(i,\max(i,j)+1)\\ f_{i,j}\to f_{i,\max(i,j)+1} C(j,\max(i,j)+1)\\ \]

忽略相交的方案数为 \(f_{(n-1,m),(n,m-1)}\),对于每组相交的方案,从第一个交点开始交换两条路径的编号,则有交的方案数为 \(f_{(n,m-1),(n-1,m)}\)

答案为 \(f_{(n-1,m),(n,m-1)}-f_{(n,m-1),(n-1,m)}\)

时间复杂度 \(O(n+m+k^2)\)

代码

T2 #P1253. 完了!惹到大手子了! \(\quad\) P7898 [Ynoi2006] wcirq

T3 #P1260. 大头照已被出 \(\quad\) P5360 [SDOI2019] 世界地图

题意

一张 \(n\times m\) 个点的图,\((i,j)\)\((i,(j\bmod m)+1)\) 之间连边(\(1\le i\le n,1\le j\le m\)),\((i,j)\)\((i+1,j)\) 之间连边(\(1\le i<n,1\le j\le m\)),边有权值,\(q\) 次询问 \(l,r\),求出删去所有点 \((i,j)\mid l\le j\le r\) 和与之相连的边后剩余图的 \(\text{MST}\),边权不超过 \(10^9\)\(m\le 10^4\)\(n\le2,q\le3\times10^5\)\(n\le100,q\le10^4\)

分析

考虑求出每个前缀和每个后缀的信息,则查询时一次合并即可

每个信息保存环上的一段 \([l,r]\),左右端各 \(n\) 个点,保存 \((r-l+1)\cdot n\) 个点的 \(\text{MST}\)\(2n\) 个端点的虚树(虚树的边权为对应链上边权的最大值)及其点数,和在 \(\text{MST}\) 上但不在虚树上的边权和

一列的信息容易计算,得到信息后答案容易计算

考虑如何合并信息

将两个信息中的边与信息之间的 \(n\) 条边放在一起求出 \(\text{MST}\)(显然一个信息中的点数不超过 \(4n\),因此此处总计包含了不超过 \(8n\) 个点和不超过 \(9n\) 条边),然后求出边沿 \(2n\) 个点的虚树,并重标号

时间复杂度 \(O((m+q)n\log n)\)

代码

比赛结果

\(61+20+20\)\(\text{rk}10\)

posted @ 2025-06-24 19:44  Hstry  阅读(19)  评论(0)    收藏  举报