2025.3.31 NOI 模拟赛 题解
T1 NFLS #18078. 避难所
题意
给定 \(n\times n\) 平面上的 \(n\) 个点(\(1\le n\le10^4\)),求一条从 \((1,1)\) 开始、\((n,n)\) 结束、穿过所有 \(n\) 个点的路径,满足路径长度 \(\le1.5\times10^6\)
分析
使用莫队加奇偶排序优化可以到 \(2n\sqrt n\pm O(n)\)
要卡到这一上限,发现数据需要聚集在块的两侧,使路径来回移动
此时可以令最上最下 \(\frac{\sqrt n}2\) 行单独作为一块计算一次
取两种方式中较短的一种,可证路径长度为 \(n\sqrt {2n}\pm O(n)\)
另一种方式为在 \(\sqrt n\) 附近枚举块长,取最短的,可过
T2 NFLS #P27365. 天津四 CF1608G Alphabetic Tree
T3 NFLS #P25327. 联邦之终 \(\quad\) CF1208H Red Blue Tree 加强版
题意
给定一棵 \(n\) 个点的有根树和 \(k\),叶子结点有权值 \(0/1\),非叶子结点权值为 \(1\) 当且仅当其儿子中 \(1\) 的数量减去 \(0\) 的数量 \(\ge k\),\(q\) 次操作查询某一点权值,改变一个叶子的权值,或修改 \(k\),\(n,q\le5\times10^5\),\(128\text M\)
分析
若 \(k\) 增加,显然只会使部分权值为 \(1\) 的点权值变为 \(0\)
对于每个点 \(u\),令 \(k_u\) 表示当 \(k<k_u\) 时结点 \(u\) 权值为 \(1\),当 \(k\ge k_u\) 时结点 \(u\) 权值为 \(0\)
对于叶子结点 \(u\),若权值为 \(1\) 则 \(k_u=\infty\),若权值为 \(0\) 则 \(k_u=-\infty\)
对于非叶子结点 \(u\),\(k_u=\min\{x\mid \sum_{v\in son(u)}([x<k_v]-[x\ge k_v])<x\}=\min\{x\mid \sum_{v\in son(u)}(1-2[k_v\le x])<x\}\)
考虑对原树树剖
每个结点 \(u\) 用平衡树维护轻儿子的 \(k\) 值的集合 \(S_u\)
线段树每个叶子维护 \((k_1,k_2)\),表示重儿子权值为 \(0/1\) 时的 \(k_u\),容易由轻儿子的 \(k\) 值的集合求出
线段树非叶子结点维护信息的复合,\((a,b)\circ (c,d)=(\min(b,\max(a,c)),\min(b,\max(a,d)))\)(其中 \((c,d)\) 为 \((a,b)\) 的重儿子)
修改叶子权值时,从下往上跳链,每次跟新链的一个位置的 \((k_1,k_2)\),然后算出链顶的 \(k_u\) 并跟新链顶的父亲的集合
跟新 \((k_1,k_2)\) 时,发现单点修改只会令 \(k_1\) 和 \(k_2\) 改变 \(O(1)\),因此暴力 \(\pm1\) 即可
时间复杂度 \(O(n\log n+q\log^2 n)\)
比赛结果
\(100+19+0\),\(\text{rk} 29\)

浙公网安备 33010602011771号