Logo Dtw的博客

博客

2025.7.31 mx 模拟赛总结

2025-07-31 17:05:44 By Dtw

T1

简单题,先排序,然后扫一遍二分求贡献,然后前缀后缀取个 $\max$ 枚举中间点就好。100 分

T2

首先转化题意:$d + kx = s$。

其中 $d$ 为横向移动距离,$k$ 为上下移动距离。

然后题意说要让 $x$ 最小,于是一开始写了个按 $k$ 为第一关键字的最短路。

但是我的答案小了,又注意到是最短路,于是写了个按 $d$ 为第一关键字的最短路,然后大小样例都过了。

但是我当时就非常疑惑,就感觉不大对劲。(事实证明我的感觉是对的,的确假了)。

只得了 51 分。正解是直接二分答案,然后跑最短路。可能是我对题意理解错了吧。

T3

首先考虑 $x$ 的取值是 $[1, n]$ 的,然后就可以枚举 $x$,然后如果有 $m$ 的话,可以枚举长为 $m$ 的这个串的开头,然后算贡献。

一开始卡在如何快速算贡献上了,但是很快想到多重集排列,于是 $n^3$ 就拿到了。

接着考虑实际上它每次是跳 $x$ 的,这个复杂度总共是 $O(n \ln n)$ 的,于是套上 hash 就有了一个 $O(n^2 \ln n)$ 的做法。有 50 分。

但是我写出来答案大了,我就猜是算重了,然后又注意到对于同一个 $x$ 如果删完之后两个字符串一样,那他们的贡献只能被算一遍。

好吧,啥都想到了但就是写挂了。

正解就差一步,还是读题问题。

题面中说了,所有长为 $x$ 的子串得连续,所以就不存在 $m$ 把一个 $x$ 分搁开的情况。

所以枚举 $m$ 的位置也是 $\frac{n}{x}$ 的。调和级数,然后就对了。

T4

首先 $n^2$ 好做,直接 $n$ 遍 dfs 即可。

接着考虑了特殊性质 $B$,一个菊花。

首先根可以找其他 $n - 1$ 个点。

其次考虑枚举非根,那么根据这个点和根的大小关系,可以得知这个点作为 $\min$ 还是 $\max$。

然后贡献就好算了:

  • 作为 $\min$,此时 $rt > i$,那么另一个 $\max > rt$,所以贡献为:$n - rt$。

  • 作为 $\max$,此时 $rt < i$,那么另一个 $\min < rt$,所以贡献为:$rt - 1$。

然后写代码的时候我是都算了两遍,最后除 $2$ 即可。35 分。

正解是考虑在最小、最大生成树的 Kruskal 重构树上做。

这个还没学,等学会了在补。

总结

最终 100 + 100 + 50 + 35 $\to$ 100 + 51 + 0 + 35。

我有理由怀疑 mx 为了增加题目难度 / 防止被盒到原题而改的抽象题面。

但确实自己水平还是不够,读题不够仔细。

所以还是练练读题,以及在烦躁的时候静下心来读题。

然后再拓展学学一些进阶算法。

评论

暂无评论

发表评论

可以用@mike来提到mike这个用户,mike会被高亮显示。如果你真的想打“@”这个字符,请用“@@”。