2025.10.18 NOIP 模拟赛 题解
T1 P130067 删数游戏
题意
给定递增的 \(a_{1\sim n}\),若 \(a_i\equiv i\pmod 2\) 则可删去 \(a_i\),并令后面的值向前平移,求可删去的最大数量并给出字典序最大的删除顺序(值而不是下标),\(n\le10^5\)
分析
选择最后一个满足 \(a_i\equiv i\pmod 2\) 的位置删去,显然字典序最大,且这样操作后它之后所有位置都变为合法,从后往前依次删去,显然字典序最大
时间复杂度 \(O(n)\)
T2 P130068 货币改革
题意
定义一个集合 \(S\) 可表出 \(k\) 当且仅当存在 \(c_{1\sim k}\) 使得 \(\sum c=k\) 且 \(\forall i,c_i\in S\),给定 \(c_{1\sim n}\),对于每个前缀,求出不能表出的最大值或判定不存在上界,保证 \(c_{1\sim n-1}\ge 2,c_n=1\),\(n\le100\),\(c_i\le400000\)
分析
同余最短路模板,使用 \(\text{dp}\) 或 \(\text{SPFA}\) 可过
时间复杂度 \(O(nV)\)
T3 P130069 机场代码
题意
给定字符串 \(s\),令 \(f(l,r,k)\) 表示 \(s[l:r]\) 所有长度为 \(k\) 的自序列中字典序最小的,\(q\) 次询问,每次给定 \(l_1,r_1,k_1,l_2,r_2,k_2\),求出 \(f(l_1,r_1,k_1)\) 和 \(f(l_2,r2,k_2)\) 之间的大小关系,\(|s|\le10^6,q\le10^5\),字符集取全体大写字母
分析
显然最优情况为每次取出 \([l,r-k+1]\) 中最小的字符,然后 \(k\) 减一,并令 \(l\) 移到上一个选择的之后
因此每个 \(f(l,r,k)\) 为 \(\text A^{X_0}\text B^{X_1}\text C^{X_2}\cdots \text Z^{X_{25}}s[L:r]\) 的形式,其中 \(X_i\ge 0\) 且尽量取到最大,比较容易做到 \(O(q(\log |s|+|\sum|))\),求出该形式可以二分做到 \(O(|\sum|\log|s|)\)
总时间复杂度 \(O(\sum (|s|+q|\sum|\log|s|))\)
T4 P130070 树切割游戏
题意
给定一棵 \(n\) 个点的树,\(q\) 次询问,每次删去一条边,加入一条边,保证修改后还是树,标记加入的边,双方轮流操作,每次选择一条未标记过的边标记,要求任意时刻所有被标记的边在一条链上(可以不连通),判断必胜方,所有修改之间独立,\(n,q\le10^5\)
分析
显然加入边的两端独立,考虑分别计算出两侧的 \(\text{SG}\) 函数值
先考虑根为 \(1\) 的情况,令 \(f_u\) 表示子树 \(u\) 内的 \(\text{SG}\) 函数,则
令 \(S_u=\{f_t\oplus ((dep_t-dep_u-1)\bmod 2)\mid {t\in\text{subtree}(u)}\}\)
对于 \(u\) 和它的一个儿子 \(v\),若 \(f_v=2k\) 显然 \(0\sim 2k-1\) 都在 \(S_v\) 中,因此 \(0\sim 2k\) 都在 \(S_u\) 中,若 \(f_v=2k+1\) 可得 \(0\sim 2k-1\) 和 \(2k+1\) 都在 \(S_u\) 中
因此令 \(ss=\{f_v\mid v\in\text{son}(u)\}\),若 \(\max ss-1\in ss\) 且 \(2\nmid \max ss\),则 \(f_u=\max ss+1\),否则 \(f_u=\max ss\oplus 1\)
这样可以做到 \(O(nq)\)
通过各种方式可优化到 \(O((n+q)\log n)\)
比赛结果
\(100+100+25+40\),\(\text{rk}11\)

浙公网安备 33010602011771号