20261025 模拟赛 总结

前言

mmt 宣称是信心赛。哈哈,没有人会相信 mmt 的话的。

经过这场比赛,我仅存的一点点信心也完全被消磨了 /dk。好痛苦好痛苦好痛苦……

哈哈哈我怎么全是挂分,哈哈哈我怎么挂完了,大家好呀,我是一只破防的嘎嘎喵,我只想问你们一个问题,你们打比赛也会挂分挂一半吗?简直是估分 \(x\) 得分 \(\frac{x}{2}\) 了,看我能绷住吗。

我去了,这个 yl 数据陨落了,不知道是不是因为我们没去 yl 所以 yl 不给我们 yl 数据了,为什么就敲错一个变量名可以挂 \(70\) 啊?这对吗??

怎么大家都让我受着 /ll。

其实本质就是太区了而已。

基本信息

  • 时间:2026 年 10 月 25 日
  • 时长:4h
  • 题目数量:4 题
  • 得分:80+30+0+40=150pts
  • 排名:rk7

大家好我喜提在信心赛过了滚木个题,哦不不不这并不好笑。

赛时/赛后情况

T1

  • 估分:?pts
  • 实际:80pts
  • 时间段:约 8:00~9:10
  • 耗时:70min

成功被 T1 创飞的来。

最开始我还有一点点对 mmt 的信任,我愿意相信这是一场正常的 S 模拟赛,但是崩溃了,我想了很久,想到了各种很难的数据结构都没能维护出 T1 的这个东西。我知道肯定要枚举 \((a,b)\) 然后求出最优的 \((c,d)\) 一类。中途还考虑了一下可以三分一下 \((c,d)\),但是虽然说 \(c+d\) 确实是可以三分的,可这里有两个值,然后我想到知道 \((a,b,c)\) 确实又可以推出 \(d\) 一类,最后破防了。

到了快九点我已经彻底炸了,开始推不等式并推出来一个 \(c+d\) 的下界。但是这样写是过不了样例的,我随机调参,也没法匹配到那个正确的 \(76\),中途出现过的输出有 \(72,73,74,75\),这并不好笑。后来发现可以对应求出 \(c\) 和 \(d\),有几个界限,但是因为有各种向下取整的 bug,我一直是不指望它对的。但是所有样例都过了。

可是这个时候已经很晚了,我已经完全没有心情再处理一些边界情况或者写对拍了,我累了,T2 还完全没开始做。直接一个原地破防,然后干脆不做了,不想看了,后面检查的时候看到这个 T1 我甚至都是排斥的。

至于能拿多少分?听天由命。没分都很正常。


我只能说希望没消耗太多 rp 在这里吧……居然有 \(80\),这是我没想到的,因为在我看到有人 \(50\) 之后我已经开始担心我的代码会不会保龄了,最终还是有 \(80\),只能说还是比较幸运的。

两个错的测试点都是我的答案比它的大 \(1\),应该都是边界问题。

其实赛时后面想到有很多边界情况后,我发现我的时间复杂度只是 \(O(V^2)\),所以说本质上加一些常数还是没太多问题的,那么在你大致得到 \((c,d)\) 值之后,或者说你只要知道了 \(c\),就可以在附近暴力搜一下,可以求出 \(d\),取一个 \(\min\)。但赛时真的累了……心态完全是崩的,所以整个人也很爆炸,也没写了,心累……

最后发现加上这个边界,在得出 \(c\) 后在 \([c-30,c+30]\) 这块大致扫一下,就是完全稳过了。只能说这也确实是一种处理边界情况的暴力手段吧……

这个 T1 主要就是实在让我没控制好心态,所以我后面做题的时候也有些累了,确实也都是被这个 T1 连累了吧。可能,T2 没有很仔细的检查,也是因为前面心态炸了吧。所以说心态还是很重要的。

不过我们相信 CCF 还是不会在 T1 放这种题的吧 /dk 没事放了也不要崩盘呀,你不会大家都不会的。控制好心态。

T2

  • 估分:100pts
  • 实际:30pts
  • 时间段:约 9:10~10:10
  • 耗时:60min

T2 甚至做的比 T1 快。

我前面做 T1 的过程中,因为感觉 T1 要崩,所以还是看了眼 T2。这个 T2 没有给我增长任何做 T1 的信心,因为这个 T2 我并不能做出来。

做完 T1 后我很累,但看到这个 T2 后我已经要疯了,因为这个 T2 我也无法秒出正解一类。思索了一下,发现当 \(x \not= 0\) 的时候是可以直接升序或者降序排序的,然后再判断一下第一个是否是 \(x\),如果是的话就插到后面的某个非 \(0\) 数后面,如果后面全是 \(0\) 就无解,差不多这样的。然后考察 \(x=0\) 怎么做,发现就是以前 abc 好像出过的一个构造,我当时用的是链表,当然这里还要特殊处理一下第一位不能是 \(0\)。

直接就是一个无敌大疯狂,因为我知道后面那个链表不好写,前面还有些呢。但是我只能开赌,开写!很幸运,几乎没怎么调就做出来了,虽然说代码确实写了一百多行(可能也有没怎么压行的缘故?),但总之是做出来了。还手写了比较器,并拍了大概几万组,当时认为是稳了,我也想不到会挂这么惨啊。

不过我后面是真的累了,T2 用一个小时我觉得其实是正常时间,但是 T1 一个小时不正常吧,这个 T1 浪费的时间有点太多了,所以我后面写 T3 T4 的时候时间也是很紧张的,最后整个人完全是累的也没有精神再检查代码一类了,我就查了个 freopen 就跑路了。事实上,如果我认真再看一遍我的 T2 代码,这个突兀的错误是很容易被发现的。


当我听到(浮木说)我是 \(150\) 的时候我已经无语了,我虽然知道我的 T1 挂成了 \(80\),但后面还有 T2 T3 T4 应该低不到哪里去啊?然后问了一下分数分布,T2,\(30\)???这对吗???虽然说 T3 保龄了我更加气愤,但是这个 T2,我的做法应该不至于是假的啊?

可能是对自己的对拍过于信任,我开始质疑自己的做法,反复思索多次没有找出问题。因为我还要吃饭,就把题目连同代码一起扔给 AI 让它判断一下我的做法是不是错的,还是说实现错了,还是说笔误了。结果它告诉我我笔误了把一个要用 \(t\) 数组的地方用成了 \(a\)……

我知道为什么会错。因为当时我是先写的 \(x \not= 0\),当时脑子抽了没开桶。写 \(x = 0\) 的部分的时候,因为这部分需要开桶,我就会无意识地看向上一个部分,然后就发现上一个部分也要开桶,就开始改,把桶的部分挪到最上面并把 \(a\) 全部改成 \(t\)。但是因为我完全没有用 Ctrl+F 或者别的什么手段去改,直接就是人眼比对的,所以漏了一个。/ll

可是不应该吧,一个这种小小的笔误真能影响到 \(70\) 分啊(当时 yl503 还没有题目,我还没开 lemon)?然后我就问我的 AI 还有没有别的问题,结果它说其他部分都是对的,改掉笔误就能过,吓哭了。思考了一下为什么拍不出来,哦,因为概率太低了,而且还是随机数。但为什么 yl 数据能 hack 死啊?哦,有多测,我的拍子造的都是 \(T=2\) 的(也能一定程度反应一些多测清空问题,但是我一般不习惯设大了,还要控制 \(\sum n\) 太麻烦)。

气笑了,改完之后过了。你就说好不好笑吧。

T3

  • 估分:50pts
  • 实际:0pts
  • 时间段:约 10:10~11:00
  • 耗时:50min

做完 T1 T2 大概还有 2h,忽然放心一点,做 T3 的时候心态明显比做 T2 的时候要好。

看题,发现这个 \(dis\) 是好求的,能做正解时间复杂度,但是这个 \(\max\) 我不会做,只能暴力枚举了跳。猜到了是拆贡献,但是拆到每个点哦我也不会做啊,放弃正解思考,暴力启动!

首先 \(30\) 分是好做的,可以直接 \(O(n^2)\) 枚举点再 \(O(\log n)\) 倍增一下。本来想写树剖的,但是前面 T2 的史吃多了,就算这个不史也不想写了,老老实实写倍增吧。写完之后调了一会,原来是因为没开 long long,然后给很多本质无关紧要的数组比如两个倍增数组(一个是祖先节点一个是 \(\max\) 值)也给开了 long long。因为习惯,虽然这里的 \(n\) 只有 \(1000\),但我全局变量的 \(N\) 还是 \(10^6\),建数组的时候用的也是这个。

然后剩下的两个部分分也很简单呀,链的话就是变成数组上一个单调队列搞搞,然后所有权值相同不就完美解决了我不会做 \(\max\) 的问题吗。唯一的问题就是这个链它没有保证诸如 \(i\) 和 \(i+1\) 之间有一条边这之类的东西,导致我还需要自己把链展开有点烦,所以留到了最后写。但总之是写完了,大样例也过了,自以为稳了。


?保龄……?你是说一分都没有了吗?怎么会???今天挂分这么严重 TAT?????

吓哭了。情况发下来之后一看,MLE??你的意思是说……然后看了一下我的两个倍增数组,完蛋,占了 \(320\text{MB}\),数据范围只有 \(256\text{MB}\),小朋友们这并不好笑。

后面 yl503 出题之后,改回 int 一交,诶!?怎么还是只有 \(30\) 啊,我后面两个 \(10\) 分的点呢?是 RE,但我拼尽全力查不出问题。喊来了 AI(没错就是帮我看了 T2 的那个 AI),质问它为什么我会 RE,它声称我的倍增数组还是开到了 \(10^6\) 所以占用空间较多留下的栈空间较少会导致 DFS 的时候直接崩掉。哦,所以又是空间的问题吗?改小了点,交!怎么 \(50\) 了。我去了,我以后再也不开额外空间了,得不偿失啊。。。

某入说这个是 Kruskal 重构树并且他做出来了,可是我不想回忆了诶 w(曾经稍微学过一点点),有点不想补。看了题解发现排序之后并查集就行了,我去,这是求极值的常规套路了吧,为什么我连排序都想不到啊??区完了。轻松写完轻松 AC,我只能说这个正解完全没有难度啊 /ll,为什么连这种这么经典的 trick 都反应不过来呢?AI 表示,当你发现要维护极值一类东西的时候,基本都会排序消掉一维,不然无法用常规数据结构维护(除非你写一些什么很高级的东西)。

我只能说对这个还不够熟悉吧……拆贡献或许算是记住了,排序都记不住啊……一定要记起来呀,这种经典的东西非常容易出现的,本来就 T3 了我不会太去推正解,但是如果是这种经典的东西的话,一看到就应该要回做呀……比如这个题目的求 \(dis\) 我是一眼出的,但是这个 \(\max\) 我完全卡住了,因为我一直在想类似求 \(dis\) 的那种拆贡献。所以说一些 trick 去多运用一下,多见几次,还是有用的,万一恰好就考了呢?

T4

  • 估分:40pts
  • 实际:40pts
  • 时间段:约 11:00~11:40
  • 耗时:40min

留给 T4 的时间不多了,当时也挺紧张的。

看到题,啥也别管直接部分分!看范围,首先这个 \(30\) 分是简单的,全部求出来排序即可。略加思索,不需要排序(对 \(10^7\) 排序再怎么说还是有点危险吧……),你按字典序做 dfs,然后找出来的第 \(k\) 个就是答案。

然后这个 \(x=0\) 也是简单的呀,对权值没有限制那就只考虑字典序了。这不就是 \(k\) 拆个二进制,呸,四进制的事嘛?直接做就可以了,白送分呀。

下一档卡住了,于是没想了,先把前面的写了。很快(其实也并非很快吧……)写完了 \(40\),这个时候大概还有半个小时下考,也就是说十一点半的样子,我又开始看下一档部分分。很大一个原因是我没有充分利用 \(x=0\) 的这种往后查找的模式,这个是对 \(k=1\) 甚至说正解的一个很大的提示,有点像某种不断递归找到最底下的那种逻辑,像某个数据结构里面的东西比如线段树上二分?哎,记不起来了,反正就是一个分治一类的东西,不断往下确定范围这种。我也不知道这个叫啥啊。

总之,因为我抄了四进制这个近道,导致我直接爆炸。也就是说,在你用一些比较降维打击的东西去做某档分数的时候,不妨想想它最原本的样子,或许,是下一步分数的提示呢?


唯一一个可以说是没挂分的题。我以为 \(40\) 会是大众来着,结果也没几个人打出了 \(40\) 是吗?(当然不排除大家挂分的情况啦)总之,我这个时候就很好奇 \(50\) 咋做。

题解的神秘剪枝没看懂。我感觉我不应该一上来就看正解,然后我就又掏出了我的 AI(一个小时过去了还看不懂用 AI 很有道理的哦),让它先教我 \(k=1\)。然后它告诉了我那个类似分治的方法,我学会了,但我不想写。因为,这个东西,是不是可以很轻松地拓展到 \(k>1\) 啊?

思索了一下,原来是保留最大,现在因为要求第 \(k\) 个,嗯,感觉保留前 \(k\) 大就是对的。我让 AI 讲正解,果然吧,就是前 \(k\) 大!好哦。这个也很好写,大概就是你先倒推 dp 辅助一下,保留前 \(k\) 大,然后你再正着去找到每一个位置,不断缩小范围最后确定整个串。

挺巧妙的……虽然说肯定也不是第一次见了,说见过五次可能都保守了,但是像这种思想我可能确实还是没能完全掌握呀。像这种第 \(k\) 形式的问题确实要想想这种,可能类似于,“逼近”法嘛?我不知道这个东西叫什么呀,只能随便取名了 w。

轻松补出正解。到这里还真觉得这场都没什么难度,真是信心赛了。可是感觉自己一点信心也没增长呀。

整体反思

T1,针对这个挂分,你既然不好去直接处理边界情况,在时间复杂度有余的情况下,可以写个暴力在附近扫一下求最优。然后至于 T1 影响的全局问题,记住,无论遇到什么情况都要稳住心态,不能因为一道题崩盘导致全局崩盘,\(100\%\) 升级成 \(400\%\) 很可怕。控制心态,当然同时也要控制时间。
T2,针对这个挂分,写代码的时候如果你要局部调整一些东西,最好 define 死它,结束了再 undif 掉,直接编译报错处理,比人眼管用,还不容易错。写代码之前想好,最好是不要调整才对。写完代码之后,所有题都做完,最后 \(10\) 分钟再累也要把每份代码都检查一遍,就算大致扫一遍,估计这个错误也能被发现,这么离谱。
T3,针对这个挂分,一定一定要算空间,时间复杂度基本都会算,为什么没有算空间复杂度的习惯呢?事实上,空间爆炸会比时间爆炸死的更惨,时间爆炸可能好歹还有部分分兜底,空间爆炸那是全零了呀,就算你只用了一点点,开了这么多也会炸。不要开冗余的没用的空间,很浪费,尤其在部分分数据范围事实上没那么大的时候,开了够用就行了。当然,因为某些情况下开大一些空间能多骗些分,所以在算过空间够用(要算栈空间哦!)的情况下可以适当开大一点。当然,不这么做其实也无所谓啦,骗不到什么的。
T4,做题的时候如果抄了某些近道,比如一些本来是一步步除过去的东西用进制数秒掉了,一定在保证好写的情况下,为了进一步的算法推进,可以回过头想想这个东西对正解有什么启发,它最初的样子是什么,能不能优化一下多拿点分一类。我们相信 CCF 的部分分设置基本还是对正解或者对下一档部分分是有提示作用在的,这样只要能够充分发挥部分分的利用,从十分二十分一步步提升到正解的情况还是存在的,所以一定要去分析这个部分分有什么用,能否起到一些提示作用,不要单纯就是骗分跑路,回归本质。

区什么时候开始写这么长的反思了(思考。

总结

写不动了,放条区吧。

csp rp ++

posted @ 2026-10-25 19:29  嘎嘎喵  阅读(22)  评论(0)    收藏  举报