在Codeforces随机刷题一年半,我学到了什么

随机刷题前的我是什么样子

笔者中学没有参与过信息学竞赛,大学没有参与过校级以上的 XCPC 相关赛事,为数不多的线下比赛经验是蓝桥杯以及 XCPC 校赛,最好战绩 C++ 研究生组北京省冠+国二(未公布 PDF 不知道具体名次),因此只能勉强算是一个算法爱好者。

笔者在 2024 年 1 月之前的情况大约如下:

  • 知识点:学完了 AcWing 算法基础+提高课以及算法竞赛进阶指南上 80% 左右的算法,还学了少量事实上对我来说 useless 的高级数据结构以及数学算法。平时做题主要是按照题单去做(即使是之前已经学过这个知识点了),即带着题目解法的提示去做题。
  • 奖项:大四时拿了蓝桥杯 C++ A 组北京省一中游,时间冲突未参与国赛,有一定的写暴力的能力。
  • 线上比赛:CF 1600 分的题目对我来说是个坎,需要 30 分钟以上才有可能做出来,但大部分时候是思路完全卡死做不出来。我从 2022 年底一直到 2023 年底,一年的时间都没在这个难度上有所突破。

读者们应该发现了一个事实:我学习的知识点和表现出的解题能力差距有些大。从我现在的角度来看,24年初那会儿掌握的算法足够我去做 95% 以上的 2100 分以内的题目了,但我当时居然还经常被 1600 分的题目卡,着实有点搞笑了。

开始改变训练方式

24 年 1 月,偶然间加入了小羊肖恩以及灵茶山艾府的算法交流群,两个群的每日活动都是写 CF,羊村是每日两羊蹄,灵茶山是每日一杯茶,题目的难度如下:

星期 羊村难度 灵茶山难度
星期一 1800 1900 1300-1400
星期二 1800 1900 1400-1500
星期三 1700 2000 1600-1800
星期四 1700 2000 1900-2100
星期五 1600 2100+ 2400+
星期六 1600 2200+ 休息
星期日 休息 休息

由于 CF 上的题我做的很差,所以最开始每日的活动我参与得非常吃力:羊蹄很多时候当天只能完成一道,周四周五的茶对我来说也颇有挑战,尤其是周五的茶我大部分时候是不做的。后面羊蹄开了专门的 GitHub 仓库,在连续打卡的激励下,我开始稳定地每日完成至少一道羊蹄,虽然只是写 1600-1800 分的题目,但这个分数已经是我 rating + 200 到 400 的题目了,所以做下来仍然可以有所进步。

不断突破自我

熬过去了两个多月,在这样写了 200 题之后,思考时有了明显的进步。我发现 1600 分的题目 10 道里我可能只有一两道不会了,1800 分左右的题目我有时候也可以自己想出来了。之后的一段时间里,我开始尝试每日啃两道羊蹄,茶也争取周一到周四全勤,周五的题至少看一看(不止一位大佬在群里说过,什么题都可以先花几分钟看一看,再决定做不做)。

到了五六月份的时候,我的 LeetCode 周赛打到了 2500 多分,相比于一年前停滞不前的 2300 多分,可以感觉出来有一些进步,但说不清楚进步在哪里了,因为我觉得自己这半年并没有学到什么新的算法,似乎只是“注意力”有了一些提升,能够发现之前发现不了的切入点。

又经过了一个暑假的积累,到了 2024 年 10 月,我的 CF 总题量达到了 1000 题,其中 \ge 1500 的题 637 道,\ge 1800 的题 293 道,\ge 2000 的题 120 道。这个时候,我能明显感觉到自己找切入点时的“注意力”吊打进群前的自己。在这段时间,我参与了一场 CF div2 的比赛,在这之前我已经一年没有打 rated 比赛了。在这场比赛中,我解决了 ABC1E1 4 道题目,并且由于 E1 解决的时间比较早,导致我这场的表现分达到了惊人的 2160 分!在这之前我最好的发挥仅仅是 AK div4 打到1700 左右的蓝名表现分。这时,我是确信自己是真的进步了,并且我相信按照这个训练计划继续走,我还有不小的提升空间。

2024 年 11 月,我第 4 次参与校赛,在预赛解决了 9 题,排名前 20,后面的决赛解决了 7 题(共 9 题),排名第 7,拿到了校赛一等奖,在此之前我最好成绩是校赛 20 多名三等奖。线下的比赛是很有说服力的,我能和那些搞过 OI 的同学在校赛的赛制和难度下能打得有来有回了,这给了我很大的信心。另外从平时训练情况上来看,我似乎可以比较稳地在非赛时吃掉 1800 分以内题目了,2000 分以内的题目也经常有一战之力。

2025 年 4 月蓝桥杯省赛,我成功 AK,拿到了研究生组的第一名,又一次线下赛的成功经历。6 月国赛打得确实下饭了,或许是起得太早去考场导致脑子昏昏沉沉,也可能是水平确实还没到,最后只拿了国二。

之后,就很少有线下线上比赛的经历了,线上没比赛主要是晚上睡得比较早,所以不参加 CF 的比赛(之前晚上参加打得非常下饭,只能打出 1700 不到的表现)。在水群时,有几位橙名的群友有说我现在的水平应该回归打几场比赛就有紫名了,但可惜目前作息实在是不太适合打。或许等后边作息发生一些变化时可以冲一冲,作为爱好者咱也是希望能上个紫的,至于橙名,目前我感觉自己的水平还够不到,我自己平时单题训练时都还没有稳定切掉 2000 分以及以上题目的能力。

附上我目前的训练情况截图:

训练情况

增加套路的学习和积累

TODO,做 ABC

到目前为止的收获

赞赏