2025.7.25 模拟赛总结
A. 子段乘积 [签到] [递推]
期望 100(-), *1300, 18 min
很典的一道题。两个子段的乘积考虑维护前缀后缀,\(\mathcal{O}(n)\) 递推美美解决,一开始没注意要同时维护最大最小,浪费了一点时间,实现也很丑,唐完了。还是基本功太差的问题,其实我上来第一反应线段树来着,有点无敌。
B. 玩偶 [贪心]
期望 100(-), *1500, 59 min
发现这个题目的限制之类的非常简单,对于每个玩偶的大小,钦定其为留下的最大大小,然后删除比它大的、删除代价小的使满足题目条件即可。理论上非常简单,实际上也的确一堆人秒掉了,但是我为什么花了这么久呢????
哦,原来是因为我没想着使用数据结构维护这个代价小的东西,一直在想怎么排序前缀和啥啥啥的静态地完成这个东西。跟个傻逼一样,略无语。浪费这 1h 时间干啥不好....
的确是太飞舞了。
C. 无人机 [图论] [贪心] [思维]
期望 100(-), *2000, 1h 16 min
看到这个题目,首先疑惑为什么我浪费这么多时间里才三四个人过这个题。不应该直接从开头做一下然后从结尾做一下就做完了吗???反思了一下,发现我好像不会这个做一下,高度似乎不好决策。怎么办呢?于是我想着去找相遇点往两边跑。如果一个点它从 \(1\) 和 \(n\) 都需要向下才能达到这个限高,那么称这个点是“好”的。感觉“好”点才能做相遇点,但是“好”点似乎一大堆,怎么办呢。
于是我再翻了翻数据范围。发现这个限高居然值域是 1e8。欸,有没有 \(\mathcal{O}(V)\) 说法!?!?进行了一些思考,发现可以考虑从 \(1\) 和 \(n\) 双源地跑 BFS,如果到限高就走边往上爬,没到就原低往上爬,到同一个点意味着相遇,感觉上非常正确。然后发现这是 \(\mathcal{O}(nV)\) 的。BFS 不现实了,又想了想,发现我唐了。
我最开始觉得这题唐是对的。的确开头 dij 一下结尾 dij 一下枚举相遇边就做完了。BFS 做法的想法很好的证明了这一点。浪费一堆时间...按理说能秒的。
D. 交集 [思维] [单调队列优化 DP]
期望 50(-), *2600, 剩余全部。
毕竟是 T4,看完题面看部分分,被这个值域 30, k=2 的部分分深深吸引了。容易将题面转化为 找出 \(k\) 个区间,使得原给定区间均包含至少一个找出的区间,且每个找出的区间至少被一个原给定区间包含,且这 \(k\) 个区间长度和最大。发现完整数据值域也不算太大,于是开始进行基于值域的深度思考。
然后与上一场不谋而同,做到了与正解背道而驰。正解完全与这个部分分无关,直接考虑包含性质转阶梯,然后很容易作出 \(\mathcal{O}(n^3)\) DP,简单改变枚举顺序然后单调队列优化就行了。至于包含性质,发现包含小区间的区间要么不用管,要么单开一个集合,然后降序排序前缀和,跟 DP 值做个 max+ 卷积 就做完了。可以说是非常基础的题了。
那么为什么没做出来呢?很大程度上是被这个与正解毫无关联的部分分所严重误导了。这个故事告诉我们,不要过于相信出题人给的东西,出题人心里坏的很 要在面临思路困难的时候及时脱身,转换思路重新思考,或许有柳暗花明之喜。
总结
总分 100 + 100 + 100 + 50 = 350(-),没有挂任何分,于是拿到了机房 rk1(并列)。
其实打得挺烂的,从头到尾全是失误:C 题过于犹豫、墙头草,思路虚无缥缈未深入;D 题不撞南墙不回头,一条路走到死于是就死了。不过没挂分还算可以接受。不过就免不了被学弟吊打了...
赛时冲 D 的时候看榜见到 11 个 AK,以为要垫底了,结果打完只剩两个了。估计一片输出样例搞心态的,纯无语。Slairae 在赛时样例得分有过 100,但是又自己改到 33,再改到 100,讲题的时候又对做法了如指掌,很难不让人怀疑是故意的。不过为什么啊??很难理解吧。
然后这b比赛的区分度太差了。两道纯送+C 70暴力+D 50暴力,起手送 320,打正解挂小分显得很小丑很亏欸。那我图啥啊。难不成打正解给小分加容错???这场直接一车 350 335,略无语。
希望下场能打好点。

浙公网安备 33010602011771号