2025 GJ 的 CSP-S/NOIP 模拟赛29 总结
得分: \(20(100)+100+0+0(5) = 120(205) pts\)
难度:黄蓝紫黑
T1 字符串小模拟因为漏判情况挂掉了,T2 赛时做+调了很久,导致 T3 想出来但没时间做,赛后又花了 1.5 h 才通过,T4 暴力不知为何打挂
打得一坨
C29
T1
模拟即可,因未特判 \('::'\) 在开头而挂
T2
小清新贪心
首先 \(k \rightarrow k-m\),然后我们把 \(s_{i} 到 s_{i+1}\) 分为一段,可以发现,段与段之间互不影响,于是考虑每段怎么放最优
首先,如果一个不放,那么区间内合法的点为一段前缀,那么贪心地,我们找到第一个不合法的点,在其上面放站台,一定是更优的,那么这个站台又会使后面一些点合法,区间内合法的点依然是一段前缀。我们还可以发现,记 \(s_i\) 表示区间内放第 \(i\) 个点能多让几个点合法,则 \(s\) 单调不增
故我们算出贡献后,贪心取前 \(k\) 大,加上区间内一个都不放的贡献即可
T3
好题
依旧把路径挂在 \(lca\) 上,则对于 $(a,b) $ 我们需满足
- \(a \rightarrow lca\) 的边的方向相同
- \(b \rightarrow lca\) 的边的方向相同
- \(a \rightarrow lca\) 与 \(b \rightarrow lca\) 边方向不同
考虑种类并查集,每次我们之合并相邻的边,判断有无解
再用个普通并查集,求连通块个数 \(cnt\),则答案为 \(2^{cnt}\)
这样是 \(\Omicron (n^2)\)
考虑优化,容易发现,很多边的合并没必要,考虑用树剖+线段树优化
重剖后,对于限制一二,我们对于线段树内连续区间的合并,把大区间分成线段树节点上的区间,可以在节点处把区间暴力合并完后打上 \(tag\),这样总复杂度 \(\Omicron(n)\)。对于这 \(\log n\) 个节点的区间也需合并,时间复杂度 \(\Omicron(n \log n)\)
对于限制三,最后再分讨即可

浙公网安备 33010602011771号