2026.3.29考试总结

100 + 0 + 100 + 20 rk3

考场

拿到题先把 4 道题看了一遍。T1 的 75pts 特别好拿并且感觉正解不难。T2 直觉像是类似线性筛,筛出无法被重复拼出来的字符串然后排序,但时空都要炸死,感觉不可做。T3 第一眼没什么想法但感觉不算很难。T4 一眼 dp 但没什么想法。最终决定按 1 3 4 2 开题。

T1 感觉正解可想所以先没写暴力。想了想可以枚举中位数,开个桶计前缀和,大于中位数的为 +1 小于为 -1,那么中位数左右两边之和应为 0,那么处理一下奇偶的细节再简单的计计数就做完了。这个枚举中位数转换成桶也算是个比较常用的 trick 了吧。( eg P2839 与很多枚举中位数的题。)

然后看 T3。想了想可以建图。设在一个场地中的 \(a\) 恰好能打败 \(b\) 就连边 \(a\) -> \(b\)。这样一共会连出 \(3n\) 条边,不难发现对其进行 tarjan 过后入度为 0 的 SCC 的点都是满足要求的。这样时间复杂度为 \(n\) 乘上修改次数,可以拿 72pts。上了个厕所后回来想正解。感觉这样的暴力做法很难优化考虑跳出去。暴力手模的过程中发现,当 \(a\) 能打败所有人,那么在其三个场地中至少有一个能打败他的人也能打败所有人。这样子就会一直转移一下,一直直到某个点。那么这个点及之前的所有点显然都是可以打败所有人的。我们设 \(p_{i, j}\) 表示 \(j\) 在场地 \(i\) 的排名,\(k\) 为最后一个可以打败所有人的人。那么 \(j\) 表示所有可以打败所有人的人,存在 \(i\) 使得 \(p_{i, j} < p_{i, k}\)。然后手摸一大堆可以得到一个结论:对于一个排名 \(k\),若恰好有 \(k\) 个点(设这 \(k\) 个点中任意一个为 \(j\))使得任意 \(i\) 有 $p_{i, j} \le k $,那么 \(k\) 排名及以前的点都可以打败所有人。当然这其实也可以用 SCC 之类的解释,但考场上确实是手模了一大堆之后的结论。注意这个分界点 \(k\) 应是所有满足条件的点中最左的,结合 SCC 会很好理解。显然这个利用权值线段树二分是简单的,然后做完了。

这时候已经时间不多了。草草打了 T4 的 \(n^3\) 暴力,本身想写 cdq 优化再拿 20pts 但是没时间了。

后话

还是收到了睡眠不足的影响,其实做的很不顺。

T2 完全没沾边,是霍夫曼树上 dp。实则之前都不知道霍夫曼树是啥,,。

T4 是差不多的,前后缀 dp 预处理,每次查询根据位置合并,其中用 cdq 分治优化。

posted @ 2026-03-29 21:20  ACehomoxue  阅读(18)  评论(0)    收藏  举报