• ACM生涯总结


    打完了 2021 年 ICPC 上海站,虽然很不舍得但也到了该退役的时候了。心里五味杂陈,这一刻的感受有眷恋不舍又有结束后的释怀。不禁感慨时间过得如此之快,回忆纷至沓来,有很多可想,也有很多可说…

    我本不是 ACM 实验室的学生,2019 年 3 月,班上一位在实验室的同学让我代他报名去参加团队程序设计天梯赛,我自认为 C 语言和 C++ 掌握的不错,便欣然接受。当时是在 HBUE 打的比赛,满分 300 分我最后才拿了四十多分,是队伍中等偏下的水平。纵观我校其他队伍更是惨不忍睹,成绩最好的居然是我们这队几乎全是大一的队伍!?我们队虽然成绩最好侥幸拿了一个省三,但和其他同台竞技的高校比还是相去甚远。打完这场比赛我就一直在想,为什么实验室几乎全是大一组成的队伍能打到最好的成绩,我如果去参加 ACM 实验室是不是也能取得这样的成绩?于是在回到学校之后的下个周末,我便参与了 ACM 实验室的周末培训,还记得当时在讲动态规划入门,那段时间连续去了三周,感觉什么也听不懂就没再去了。

    时间来到 2019 年暑假,我在另外一个实验室的JavaEE组有一个暑假考核,实际上就是写一个简单的 JavaWeb 项目,花了十几天做完考核任务。大概从七月下旬开始到八月底一直在 ACM 这边参与暑假集训。集训刚开始是学长们拉了三套题目,大概做了两周,当做完这些题目后,教练刘老师按照做题情况和上学期训练情况组队,当时按照排名从高到低每个人决定自己的队友。我因为来的比较晚,自然是没人要,最终和 zcx 以及 lb 组了一队。然后开始了亚洲训练联盟的组队赛,很多比赛都是只能签一两题,有些简单贪心都不会写,感觉自己好菜。那段时间的快乐就是每次比赛罚坐时看赛时榜单膜拜神犇队伍,有次复现 2017 南宁区域赛,当时看到我校已毕业的最强队伍赫然排在银首,不禁感慨学长们真的好强,我也暗自决心要向学长学习。后来到了区域赛的网络赛时,我们队仍然是只能签一两题甚至爆零。大二上开学后,我决定要刷穿紫书,于是我开始从头到尾刷紫书。不管是课上还是课下,只要能挤出时间,我都在刷题,周末除了按时打训练赛,其余时间就刷紫书。当时觉得自己没有数据结构基础,而且我们大二下才上数据结构,就去哔哩哔哩看了《数据结构》这门课并且做了笔记。不知不觉大二上结束了,那时候还没有疫情,我们进行了为期一周的留校寒假集训,当时学院领导还出席了开营仪式。那次的寒假集训质量很高,当时的实验室负责人万总找到了 UCAS 的朋友举办 SCUEC-UCAS 寒假联合训练营,讲课形式是哔哩哔哩线上授课,题目的质量也很高。可惜我当时基础还比较差,大概只听懂了并查集,二叉树,贪心这些的一部分,数学(数论等),数据结构(线段树树状数组等),字符串(哈希马拉车KMP等),生成函数(FFT等)等这些更高级的我几乎就听不懂了。短暂的七天很快过去了,我当时定的 1 月 18 日回家的票,1 月 23 日武汉封城,有惊无险,至此 2019 的时光画上句号。

    在疫情的这段时间里,几乎差不多是天天刷题了,开学后的训练联盟周赛,终于看到了实力的明显进步,但是感觉学的知识点依旧很少,于是依然在恶补紫书。在暑假时,因为要重新组队了,之前和万总商量好组队了,我们俩也一起训练了一段时间了。但是队伍的第三人一直没有确定,最后和李哥组了队。因为在家训练状态很难保证,学校也不准提前返校,于是我们队还有两个学弟决定回学校附近租房子住,当时是在 WIT 附近住教练刘老师的一个出租房,无房租只需要付水电还是挺好的。当时在那边打了杭电和牛客的多效,几十场比赛下来结果并不理想,队伍实力有待提升。我们三人的分块思路是,我负责数学,万总负责图论,李哥负责数据结构和字符串。我们基本按照分块去学,但是一个问题一直在悄悄潜伏没有被发现,那就是我们三人的基础还没有打牢,就急于学各自领域内更加深入的一些东西。那段时间打比赛、补题、自学、总结,充实的时光转瞬即逝,开学了。

    开学已经大三,课虽多但还是以比赛为主,实际上很多课不怎么听了。九月底打了 CCPC 的网络赛,四题收尾,一道亚线性筛的题目和一道博弈怎么也做不出来。我暑假学了那么久的数论,结果考了一个这么偏的亚线性筛,觉得自己学的还不够,接下来的那段时间便又投入了数论的刷题(各种筛法,数论函数,莫比乌斯反演,原根等)。尽管投入了大量的时间去学这些偏难的算法,但是在接下来一年多的比赛中几乎没有在比赛中碰到过这些知识相关的题目,而过了几个月当时学的一些东西也已经遗忘。在十一月份的 CCPC 秦皇岛站,也是我的第一场正式比赛,赛前甚至觉得拿个奖不成问题,结果打脸来的很快。当时的比赛状态就不是很正常:1. 解题时容易想着想着脑袋就短路了;2. 明明就是一个简单数学问题的变形却联想不到经典的模型去嵌套解决;3. 一边想一边和队友讨论导致思路混乱,两边都得不偿失。打完秦皇岛之后,ICPC 的比赛时间定在了十二月,担心期末的最后几周和比赛相互影响,我队决定打来年的昆明和银川。在十二月底打星参加了济南,那场题目有点问题,前四题写出来没啥问题,第五题很难出,打出来的成绩算是一般,够不到奖牌。

    时间来到了 2021 年初的寒假,训练还是个人为主,牛客寒假基础训练营和 codeforces 构成了假期生活。因为已经很久没有抓基础和思维了,基础训练营打的不是很理想,codeforces 打的稀烂,还在 1300-1400 之间徘徊。本来有打算队内开语音多打一打训练赛,因为三个人难免在家有不可抗拒的缺席因素,好像只打了两场便也停止了。

    寒假转瞬即逝,再开学已经是大三下了,也就是 2021 年的上半年。这时候我们满怀信心去打昆明,结果是头都被打烂了,只签到了一题便结束游戏。队里没人去专攻DP,一道LIS的变形题(洛谷官方题单原题)三个人花了几个小时想不出来,心态崩掉身心俱疲,我赛后都已经在思考自己写了这么多题打了这么多比赛,进步在哪儿呢?后面学长和老师开导了我们,备战比赛要多打比赛多补题,codeforces一定要重视,重新制定了训练计划,基础一定要牢,不能被基础题卡脖子,我们准备把洛谷的基础题单给刷穿(虽然现在还没有刷穿)。很感谢已经退役的学长们这时候还在指导我们如何去训练。于是在银川之前,我们全身心投入训练,2021年的五一假期一天都没有放松,都是在实验室度过的,基础和codeforces都有了不少的提升(以前打codeforces老是开黑,现在基本都是各自独立去打了)。五月中旬踏上了前往银川的航班,最后有惊无险拿了一个铜奖,队友打算考研,银川似乎是我们这支队伍的退役赛。

    六月初,西安邀请赛开打,我们还想再冲一波。题目稍难,两题部分有奖。不知道为什么,打了不少线上线下赛了,签到题是那种多次提交看运气的鬼题,我们交了所有情况但是依然错误,三个人十分不解,甚至开新题的动力都没有。过了一个多小时才发现是交错了题目,A题交成了G题(大概是这样)。签完到已经是尾部排名了,这时一道期望的数学题还有一道DP可做,期望我和wzq不太擅长。从我的角度来说,我不擅长或者推不下去那种数学公式的题目,尤其是正式赛的现场,脑子更是因为特殊原因老是不开窍。李哥花了两个多小时,推了四五页草稿纸,前前后后给了四个公式,在最后一小时确信新公式是对的。这时,最后一题的类似区间合并的DP也只差些细节了,交了一发TLE,是因为区间合并写了暴力,需要去优化。万哥脑子很乱喊我帮忙调DP,李哥也很慌张喊我推公式,两边都是临门一脚,但是却一道也没有写出来。 f ( n ) = a f ( n − 1 ) + b f(n) = af(n - 1) + b f(n)=af(n1)+b 这样一个类等比数列,我们三个人都想不起来怎么变换。在紧张与无奈之下,时间到了,只过了一题草草结束。

    正因为在大三的尾巴拿到了生涯唯一的一块牌子。在完成大学的所有课程学习后,成绩排名也已经出了,绩点3.68专业排名第五。本专业去年四个保研名额,有很大的机会,还是值得冲一下的。报名了好几个学校的夏令营,只通过了CUG(WH)和HUST。CUG当时是线下,面试时很紧张,四级501分口误都说成了1501分,最后作为电子信息专硕最后一名且刚好及格的分数通过。HUST的机试和面试都表现不错,成功拿到优营。九月底,紧张的保研结束了,最终去了HUST读研。

    回想整个ICPC的竞赛生涯,一路坎坎坷坷,有很多满足也有很多遗憾,有成功也有失败,有最后过题的欣喜若狂,也有签一题而后自闭结束比赛的惨淡结尾。我个人感觉自己在大三下才找到了训练的感觉,也就是刷过的题可以成为自己的经验,以后再有类似的,都可以套用类似的做题过程或模板。写题无非就是读题,建模,选择算法,编码,debug与提交。这几个环节环环相扣,每一个步骤都至关重要,需要我们在大量的练习中去参透去提升。除此之外,比赛还考验了心态,保研后再打比赛我的心态和以前感觉有了很大的变化,可能确实提升了但也有点晚了。以前总是手忙脚乱的去思考,去看榜,去自闭。但比赛需要的就是专注,认真且自信。并不要去担心比赛的结果担心失败尔尔,而是只用心去完成比赛时一道道做题的过程,结果并不重要。此乃吾之所得也。

    2022年6月29日

  • 相关阅读:
    理解 Python 中的装饰器
    华为机试真题 C++ 实现【等和子数组最小和】【2022.11 Q4新题】
    清华、IDEA、港中文联合发表的 DQ-DETR: Dual Query Detection Transformer for Phrase Extraction and Grounding论文阅读笔记
    C++语法基础(8)——指针与引用
    基于javaweb+mysql的教务选课管理系统(管理员、教师、学生)
    一点一点学习C++之笔记003
    目前已确认 Windows 10 KB5015807 更新中存在的问题
    天津五家受欢迎的python培训机构 python凭什么这么火?
    前端面试题——JavaScript 高频
    STL:stack和queue
  • 原文地址:https://blog.csdn.net/qq_44691917/article/details/121595868