2025.5.13 NOI 模拟赛 题解
T1 NFLS #P12848. 令人闻风丧胆的英文名称
题意
给定一个长为 \(n\) 的括号序列 \(s\)(不一定匹配),\(q\) 次询问每次给定 \([l,r]\),求 \(l\le a\le b\le r\) 且 \(s[l,a)\cup s(b,r]\) 为合法括号序列的 \((a,b)\) 数量,\(n\le2500,q\le4\times10^6\)
分析
令 \(dep_i=\sum_{j=1}^i ([s_j=\text{'('}]-[s_j=\text{')'}])\),令 \(nx_l=\min\{r\mid dep_r-dep_{l-1}<0\}\),若不存在则为 \(n\),令 \(pr_r=\max\{l\mid dep_r-dep_{l-1}>0\}\),若不存在则为 \(1\),则对于询问 \([l,r]\),\((a,b)\) 合法当且仅当 \(dep_{a-1}-dep_{l-1}+dep_r-dep_b=0,nx_l\ge a,pr_r\le b\)
第一个条件等价于 \(dep_{a-1}-dep_b=dep_{l-1}-dep_r\),枚举区间 \([l,r]\),将 \(dep_{l-1}-dep_r\) 的划分到同一等价类,则第一个条件等价于只统计相同等价类中的区间
后两个条件相当于静态二维数点,容易扫描线维护
时间复杂度 \(O(n^2\log n+q)\)
从另一个角度考虑以上条件,存在 \(O(n^2+q)\) 的 \(dp\) 做法
T2 NFLS #P3313. 路径压缩
题意
给定 \(f_{1\sim n}\),通过并查集的 \(\text{find}\) 和 \(\text{unite}\) 将其变为 \(g_{1\sim n}\),求出具体方案或判定无解,\(n\le1000\),多测 \(T\le10^5,\sum n^2\le5\times10^6\),保证 \(f\) 合法
分析
若 \(g\) 成环或 \(f\) 中的连通块在 \(g\) 中不连通,显然无解
否则考虑 \(g\) 中一个连通块,它由 \(f\) 中若干连通块组成,设这些连通块的根为 \(r_{1\sim k}\),则 \(g\) 的根必为其中某一个
若 \(g\) 中 \(r_x\) 为 \(r_y\) 的父亲,则某时刻必然进行了操作 \(\text{unite}(r_y,r_x)\)
\(\text{find}\) 操作只会破坏祖先后代关系,不会新增,因此若 \(g\) 中存在 \(x\) 为 \(y\) 的祖先,则从 \(x\) 和 \(y\) 所属连通块合并到结束,\(x\) 都是 \(y\) 的祖先
若 \(x\) 和 \(y\) 在 \(f\) 中不在同一连通块而 \(g\) 中两者属于同一连通块,且 \(g\) 中 \(x\) 为 \(y\) 的祖先,则 \(x\) 必须为它所在连通块的根,且合并时 \(y\) 的连通块的根接到 \(x\) 下
枚举 \(i\),若 \(f_i\ne g_i\),则必须对 \(i\) 进行 \(\text{find}\) 操作,且在所有 \(\text{merge}\) 操作之前进行一定最优
扫描一遍后,若仍然有 \(f_i\ne g_i\),此时 \(f_i\) 值为 \(i\) 所在连通块的根,则 \(\text{merge}\) 过程中(即两者间的祖先后代关系被破坏前)有 \(g_i\) 为 \(f_i\) 的祖先
将这些关系建出图(\(x\to y\) 表示 \(y\) 为 \(x\) 的祖先),若存在环则必然无解,否则得到拓扑序,按拓扑序枚举 \(p\),假设以当前的 \(f\) 和 \(g\) 按之前的方式建出图,令 \(q\) 为 \(p\) 连向的点中在拓扑序中最靠前的,若 \(p\) 出度不为 \(0\),则 \(\text{unite}(p,q)\),然后枚举 \(i\),若 \(f_i\ne g_i\) 则 \(\text{find}(i)\)
若操作结束后 \(f\) 和 \(g\) 不同则无解,否则得到一组合法解
时间复杂度 \(O(\sum n^2\alpha(n))\)
T3 NFLS #P2615. 通道建设
比赛结果
\(100+40+3\),\(\text{rk}32\)

浙公网安备 33010602011771号