2025.8.30 NOIP 模拟赛 题解
T1 P110124 Mex
题意
给定 \(a_{1\sim n},b_{1\sim n}\),对于所有 \(s_i\in\{a_i,b_i\}\),求出 \(\text{mex} \{s\}\) 的最小值及对应方案数,\(n\le10^5\)
分析
显然最小值为最小的 \(x\ge 0\) 使得不存在 \(i\) 满足 \(a_i=b_i=x\),设 \(\text{mex}\) 的最小值为 \(mn\),对应方案数为 \(2^{\sum_i [a_i\ne mn\land b_i\ne mn]}\)
容易做到 \(O(n)\)
T2 P110125 独立集
题意
定义 \(k\;-\) 独立集为图的一个子集满足任意顶点至多 \(k\) 个邻居同样在子集中,给定一棵树,对于所有 \(0\le k<n\),求出 \(k\;-\) 独立集数量,\(n\le500\)
分析
令 \(f_{u,k,0/1/2}\) 表示子树 \(u\) 中求 \(k\;-\) 独立集,\(u\) 没选 / \(u\) 选了但邻居数量 \(<k\) / \(u\) 选了但邻居数量 \(=k\) 的方案数
转移 \(u\) 时,记录 \(t_k\) 表示不选 \(u\) 情况下 \(k\) 的答案,\(T_{s,k}\) 表示选择 \(u\) 及其 \(s\) 个儿子的情况下 \(k\) 的答案,每加入一个儿子则在 \(T\) 上背包,最终由 \(t,T\) 得到答案
容易做到 \(O(n^3)\)
T3 P110126 删点
题意
给定平面上 \(n\) 个点 \((i,a_i)\mid 0\le i<n\),每次操作可以选择一对 \(i,j\),以 \((i,a_i)\) 和 \((j,a_j)\) 为顶点组成一个矩形,删去严格位于矩形内的点,求出到不能操作为止,最终可能剩下的数量有哪些,\(n\le10^3\)
分析
特判 \(a\) 全相等的情况,此时显然答案为 \(n\)
显然所有最大值和所有最小值都必然剩下,且的一个最大值/最小值到最后一个最大值/最小值中间的部分只会剩下/最小值,该区间以前只会剩下若干个 \(a_1\),以后只会剩下若干 \(a_n\)
问题转化为求出前缀中可能保留多少个 \(a_1\),后缀中可能保留多少个 \(a_n\),以前缀为例
假设要计算的前缀为 \([1,lp)\)
若选择了一对 \(1<l<r<lp\) 满足 \(a_l<a_1<a_r\) 或 \(a_l>a_1>a_r\),则删除 \([l,r]\) 中等于 \(a_1\) 的位置
可证对于任意一种最终状态,存在一种选择方式使得选择的 \([l,r]\) 之间无交
因此令 \(f_{i,j}\) 表示 \(1\sim i\) 中能否保留 \(j\) 个 \(a_1\),\(f_{i,j}\gets f_{i-1,j-[a_i=a_1]}\),枚举 \(k<i\),若 \([k,i]\) 合法则 \(f_{i,j}\gets f_{k,j}\)
用 bitset 优化容易做到 \(O(\frac{n^3}\omega)\)
T4 P110127 连接
题意
给定 \(n\times m\) 的网格,令 \(P_a^b\) 表示取 \(a\sim b\) 行得到的矩形中 \(1\) 的四连通块数量,求出 \(\sum_{1\le a\le b\le n}P_a^b\),\(n\le10^5,m\le50\)
分析
考虑分治,设目前处理 \([l,r]\),分治中心为 \(M\),需要处理所有 \(l\le a\le M\le b\le r\) 的 \(P_a^b\)
从 \(M\) 合并至 \(l\) 的过程中,第 \(M\) 行中 \(m\) 个点只会发生合并,因此一共只会出现 \(O(m)\) 种连通情况,右侧同理,两两配对共 \(O(m^2)\) 种,分别处理一下即可
容易证明时间复杂度为 \(O(mn\log n+nm^2)\) 的
具体实现时,可以在扫描 \(M\to l\) 时维护 \(l\sim M\) 行中所有点的连通性,每加入一行则尝试纵向和与前一行合并,若产生了第 \(M\) 行的合并则新建等价类,右侧同理
需要注意常数
比赛结果
\(100+100+28=36\),\(\text{rk}40\)

浙公网安备 33010602011771号