前言
如果拿 luogu 的建号时间来计算自己第一次接触算法竞赛的时间。那我已经断断续续地在这条路上走了 6 年了。
不过实际上应该略早于这个的时间,因为我不记得是在 cpp 老师教的第一周还是第二周后我才开始建 luogu 账号的,差距应该不大。
2018 年,初二
第一次课的时候应该是 wxy 和 cpp 老师带着我们培养兴趣,好像还是在老校区的南五机房。
我还记得第一节课的时候,发了个有好几页的 docx
文件,让我们在本地的 Dev-C++
上写代码,然后把代码复制到 ZLOJ
上提交。
我记得是没教过 Hello World!
的,不过里面应该有一篇代码长这样:
|
|
当时和朋友在讨论这几条语句的原理是什么,为什么这样就能实现输入输出。然后我把第6行的 +
全改成了 -
,发现这个程序就变成了求 $a - b$ 的程序。然后改成了 *
,发现这个程序就变成了求 $a \times b$ 的程序。
在临近下课时候,我把输入语句删了,然后把输出语句改成了 printf("I♥you");
,然后在 cmd
小黑窗里真的就看到了 I♥you
。
虽然现在看起来挺简单,平常,甚至有点幼稚,但是当时的我真的很兴奋,比起课内枯燥的语文,搞不懂的数学,以及莫名其妙的科学,这种有探索感和创造性的学科真的很令人 Kira Kira~ Doki Doki~⭐。
ZLOJ
中的 ZL
我认识,但是 OJ
是什么意思我不知道,在周末的时候在网上顺着这个词找到了一些乱七八糟的网站,也找到了 luogu
。
我让我妈买了一本《C++ Primer Plus》,也算是启蒙吧,平时在寝室无聊的时候学的。虽然学的不是很系统,但是感觉比起别的 OIer 还是好一点,尤其是对各种 STL 的使用。虽然这些东西基本没在算法竞赛中用到过。
后来应该是分了次班,到了新校区了,我依稀记得当时的班级氛围特别烂,或者说从此之后就再也没有好的班级氛围了。
然后开始了比较正式的学习算法竞赛。第一节课还有 小C 来讲课,讲了一些基础的东西,然后之后就一直是 cpp 老师在讲课了。也只是讲了些很基础的东西,大学生 1h 应该就能会的东西。
第一节课后我好像还记了笔记,手抄了一页,然后记得还抄了张超的名字和电话,但是我找不到这个本子了,也找不到这张照片了😭。(我明明记得有拍过照)
中间倒是经常去机房学或者摸鱼,把语言基础也都学会了,当时一度在 ZLOJ
上当了 rk1,不过后来事实证明水题太多也没什么用。
当时初二的普适目标大概是准备高中的提前招吧,也就是搞什么所谓初中数学竞赛和物理竞赛。当时自己的能力其实比较一般,后来还是考上了。
感觉记忆有点模糊,上面说到的很多事件时间顺序可能是乱的。
2019 年,初三
初三可能才算是真正开始的一年,暑假的时候被拉到机房集训,那一年 NOIP
死了,也就是打 CSP-J
了。
当时前期集训的时候感觉自己的水平还算可以的,但是一到后期就感觉自己的水平就落下了许多,尤其是面对一些思维题的时候。
也不记得当年自己对竞赛的想法了,不过失落和无力感应该是有的,最后 CSP-J
的成绩也只拿了二等,离一等线差了 10 分。
当时我们之中最时尚的单品就是 《明日方舟》,被万恶的控老师拉入坑的。在机房里摸鱼挂粥的日子确实很快乐。当时普及组结束后回归文化课的时候,很多人退了明日方舟的坑,我那时候没明白为什么,也许是自己太过年轻对这种东西看的太重了。
后来一直到了 2024 年 1 月 我才退坑,在初高中的时候真的很喜欢明日方舟,大学的时候感觉事太多了就基本没时间养了,再加上当时的轻薄本很难带动 MuMu 模拟器,就玩的很少了。
2020 年,高一
很多人会说自己的记忆在疫情时间变得很模糊,但是我仔细一想自己的记忆、爱好、社交圈都是从疫情才开始的。
上半年其实是在准备中考的。
疫情的时候挺慌的,中考内容都是抄的,高中内容也是抄的,当时还被 hhn 喷过一次。
然后每天要带着负罪感玩。最后是什么都没学到也没玩好。当时还是太年轻太软弱了,没法衡量自己的能力和时间。
从后来者的视角看,中考其实是不用准备的,考的多烂都可以上高中,考的多烂也能被拉到竞赛班,感恩 小C。
还有什么类似于高中的学考,在最后也没能对自己的升学产生什么用处,他们后来去打的清北营的条约也没什么用,高中就活在老师们编制的一个又一个虚幻的目标中。
不过当时还是认真准备了,体育中考仅在我们这届取消了,竞争也少了点。最后考的疑似挺烂的,但是我也不知道烂在哪里。其实每一门的分数都长得还行,但是总分就很烂。
然后暑假开始又去机房集训了,这次是综合楼的机房,以及 小C 当教练。
暑假的时候是比别人早开学了很多,有一次台风天的时候我们还没放假,小C 高兴地说:“又可以在机房快乐 AC了!”
然后第二天变成了水漫zl,不得不放假。
教练的话其实起到的作用不大,大部分时候都是在监督摸鱼状况,以及组好题。平时挺严肃的,感觉压力很大。偶尔也会表现出一些人性化的一面。
暑假的时候让我们每次考试后写一篇总结,发在有道云笔记上。比如这两篇 Test 66 2020.8.31 下午考试总结、线段树专题总结。
自己当时还是很喜欢写一些题解的,就像现在一样喜欢给自己学的知识雕花边。现在看看感觉写的挺幼稚的,但当时肯定乐在其中。
但是虽然写了很多篇总结,能吃进去的东西现在想想好像也不多,每次训练赛的时候就卡题
训练的时候的状态其实和初三差不多,觉得自己的能力也许就是这样了,当时想的是打完 NOIP
就退役了,没想到
然后从这一年开始要先考 CSP-S
再考 NOIP
。
CSP-S
CSP-S
的题目有臭名昭著的 儒略日,比赛的时候其实觉得自己考虑的挺周全的,打的对拍都没什么问题。第二题也是很快就切掉了。第三题看起来很重打了 20 分的切分,第四题无从下手(luogu 上好像是黑题)。
结果呢,儒略日漏了一个含 0 的 corner case,当时一度怀疑会不会炸很多个点(因为是多测),90 pts。
第二题也有神秘的炸 long long
的 case,当时没考虑到,95 pts。
第三题的切分没问题,但是赛后发现,把 if (n <= ...)
注释掉,可以拿 35pts。不过也没用了,反正多几分也还是二等奖。
这次打完之后还是很失落。因为一开始自己感觉还是很喜欢算法竞赛的,但是后来颓势明显,感觉自己的能力不如别人,也不如自己想象的那么强。
遇到那种强思维强数学的题目,自己就会不知所措。但是这两种题其实已经几乎涵盖了所有的题目了。
两次比赛可能都没有炸分,该拿的都拿了。但是奈何拿不来的分别人都会做。
觉得自己打完 NOIP
就该退役了。
NOIP
说 NOIP2020
是我算法竞赛生涯中打的最好的一次也不为过。我到现在还记得我是 $257 = 90 + 92 + 10 + 65$。也记得我是怎么做的每一道题。
出来大家除了第三题,估分和做法几乎都一致。都是 $100 + 100 + 60$,不过我第三题不大会,所以只有 $10$ 分。
但是大家发现第一题需要,第二题树状数组哈希会被卡常。
结果是第一题有被卡到 $60$ 分的,由于他们的 $\text{lcm}$ 的写法是错的,写的 a * b / gcd
,而只需要改成 a / gcd * b
就有 $90$ 分了。(我记得这点好像有人强调过,所以我当时是这么写的)
第二题常数好的可能有 $100$ 分,常数差的可能有 $84$ 分。
这是我为数不多懒得卡常并且用了结构体写树状数组,呃呃了,赛时测的其实卡不太掉,虽然确实有点慢。
第三题我确实不会写,神秘构造。
第四题有好多段切分,都没挂,然后又多了 5 分 puts("No");
。
其实水平感觉不高,只不过大家分普遍炸的比较明显。第一次当上高一机房的 rk1。
2021 年,高一
后来就是寒假集训了,当时挫败感非常强,留下来的人里,我每次打都是倒数。后来就决定退赛了。
过了半个学期,小C 跳槽了。
2022 年,高二
高二的选科我选了技术,信息技术基本很难低于 45 分。也因为这个选科,与 top 班无缘了。
分班后的第一次期中考试,我考了 班级rk1,借了技术 96 分裸分的光环。
后来到高三前应该都没掉出过前十。
另一边我们今年这届机房形势比较惨淡,没有能进省队的。
2023 年,高三
首考,技术拿了 99 分,比较惊讶的是物理能拿 99,但是化学只有 97。总共 424 分,rk1。
首考后就比较开化了,不再去纠结什么刻意的“努力”。因为我知道到最后我的语文和英语可能也就只有这个水平了,而数学还是要听天命。而大家也像之前一样,总是会赶回来的。
1.5模好像语文 96 < 化学。好像被语文大于我 40 多分的人超了。
2 模,忘记细分了,反正考的挺高的 669,疑似校 rk11。好像因为数学错了一个弱智 5 分题还被 🐍 说教了。
3 模,好像是650+,疑似班 rk11,是最差的一次,但是我也不知道具体差在哪。
高考后
高考,$111 + 137 + 129 + 99 + 97 + 99 = 672$,rk 4000+。
当时是觉得自己考的比较烂的,鱼鱼了很久。但是实际上这种卷子我也没法考的更好了(虽然数学错了多选第一题)。本来就利好文科人,自己之前积累下来的小三门能拉的分数微乎其微。
也就是所谓的“如果努力的尽头就是奇迹”。
高考发挥成什么样应该都很正常,更何况我本来也不是很厉害,比我更厉害的人也有比我差的。
从更为长远的去想,正常人都有幸运或者不幸的时候,而我满脑子想的只有自己的不幸,实在是太幼稚了。
填志愿的时候没好好填,于是没能到武大保底,也没能到西交的信息大类,当时还比较嫌弃哈工大冷所以没报哈工大。
没敢填那些需要转专业的学校,不敢。
于是到了一个我当初在志愿上填着玩的学校,分数线 = 我分数 - 5 的学校。又鱼鱼了两个多月,甚至一个学期。
上面的这种话我后来不敢说给任何一个人听,实在是太俗套了,以及我到大二的时候,每每在食堂里听到别的学校的名称我就会觉得刺耳。
后来想了想,这才是命运最好的安排吧。
在一个陌生的城市,一个没有人知道过往的地方,取得了还算不错的成绩,结识了一些因为我这种背景才能认识的人。
2023 年,大一
契机
在高考考差的背景下,感觉自己还是想要做一点事情的,就像算法竞赛。
一方面是觉得这里竞争并不是很激烈,另一方面我得拿点什么比赛来证明自己给自己升值。
事实证明这两点可能都有错。虽然不是强校,但是我也不是强人。
在开学初还是比较高调的状态,现在的我看以前肯定会觉得唐。对什么事情都一惊一乍的,说话也很典的 OIer 风格。
开学前的时候,那时候只有浙江群这种渠道,在群里问了一下加上了戴佬的 QQ,没想到后来能一起组队。后来被拉到了群里。
了解到我们大一是没有名额打 ICPC
和 CCPC
的,当时还挺诧异的,但是后来想想也是对的,我大一这个比样去打不是狠狠打铁。
不过正因为这种规则,我当时想的是只打一年就退役了。
比赛前
在刚开学上军理课的第二天,那时候坐我旁边的人在看 C语言 的教材,我在那边指指点点(现在的我根本不敢想)。
问了一下发现居然是我昨天回的贴吧的人。(问的主题帖是 ACM 相关)
后来有一天听讲座的时候,我和他在聊什么 scanf
和 cin
输入之类的东西,旁边的人也过来聊这些,他和我是同一个班的,也有 ACM 的经历。后来成了我们班的学委,也是我打 ACM 一直以来的队友。
后来就开始打 codeforces,扭了很久终于上了蓝名。
新生训练赛
大一上的时候有每周有新生训练赛,每次大概都 4~5 名的样子。反正感觉自己比较一般。
盒了一下排在我上面的,几乎都是高中学到高二的。学的多且久,比我这种 NOIP
切分选手要强多了。
后来有后悔过高中为什么只学到高一,细想的话根本没必要后悔,自己当时也想清楚高二的时候没能力和他们竞争,也没能力学我那时不会的东西——大部分现在也不会。
校赛 BITCPC
大一上的时候还有一次校赛。和队友的学长组了三人队,开启了大学 XCPC 的第一场摸鱼。
赛时没被我读到签到题,然后后来他们讨论的时候我也在旁边想自己的。
比较有成就感的就是,我做出了一道 LCADET
的题,靠当时的线性代数推导的。
(利益相关,线性代数只有 94 分,专业排名 30+% 迄今仍然是我专业排名最低的一门。
在退役前偷偷地想过一次,自己好像训练过程能出思路的题大部分是线代题。
最后是因为巨大罚时,拿了银牌 rk1。开启了 XCPC 的传奇银首。
感觉得给队友狠狠磕一个。
2024 年,大一
寒假集训
寒假集训这段时间的训练把我搞得有点 ptsd 了。主要是当时打这个还是比较认真的,但是经常长期坐牢,很无力。
每天都有一场,然后只能看着别人做出来,自己却只能干看着。这种感觉真的很难受。
组队赛的时候就更明显了,看着队友在做,自己想不出来也帮不上忙。
这种感觉一直持续到我打区域赛的时候还是这样。
寒假训的可能还算比较刻苦,有补题以及回忆以前的东西,不过也没什么用。
后来打牛客寒假集训赛,第一场其实完完全全在动车上打的,居然让我 AK 了。
后面几场打的其实挺正常或者挺烂的。到了我另一个能吹的点了:打水题可能比较厉害。
但是后来区域赛两次让我打爆搜我都死了这是为什么呢。
天梯赛
天梯赛的体验其实比较一般,感觉一直都在打水题搓代码,最后打到标准暴力分数 259 拿到了一个一等。
蓝桥杯
省赛在机房打,国赛早起打车去北工大。
蓝桥杯选的是 py 组,没想到这么水,甚至是 py 组全国 rk6。(忘了具体 rk 几了,反正很靠前)
感觉并没有打很多的有思维的东西,可能这就是暴力打满吧。
今年报了 CA 组,不知道会不会被薄纱。
北京市邀请赛
早起坐地铁去华子打,送的东西真的多。
烂完了。全场数学,摸鱼一整场。再次感谢队友带飞拿了银牌拿了小奖品。
山东省邀请赛
花一个早上速通了济南。
最后有一道题没搞出来,拿了金牌。
那道题有点像寒假集训的最后一场的第一题,当时不是我写的,所以没想起来怎么写,不过最后一步还是差的挺大的。
后来才知道都是 SUA 出题组的传统题。
2024 年,大二
暑假集训
暑假集训就全是组队场了,牛客多校和杭电多校高强度打了 20 场。队伍的顺位还是比较高的,但是自己的表现一直都是很一般的。
前期还是会补题的,后来就没什么补题的欲望了。
由于顺位比较高,拿了 2 + 2 + 1 次区域赛的名额。
网络赛
史。
坐牢。
CCPC 济南站
铜。
这场比赛我贡献了很大的锅:
- B 题卡了我非常久,一个若只的爆搜却一直
TLE
,不知道当时怎么想的 - E 题就一个地方,我觉得有问题,然后改掉了,虽然也和队友说过了,不过当时可能没来得及想。
其它就是 C D 都没好好看,就一直卡在 B 和 F 上。
题目确实不大难,但是比较反传统,而且榜歪了。也是需要好好反思。也是需要加训。
在区域赛前,我想的是,我们队肯定会有金吧。结果第一场就拿了铜,实在不甘心。
之后就被剥夺了热身赛上午出去玩的权利(,就找时间 vp 一套题。
回去自己狠狠的训了一周。不知道有没有起效。
ICPC 南京站
非常可惜的一场,人类史上最大最恶绝望事件。
正好差 20min 罚时就金了。
开局我先敲了个签到,敲得比较慢,还让队友看看有没有问题。不敢用 STL 中的函数。
然后就一直在看 B 题了。这个 B 题看了我两三个小时。
最后为了简化消元操作,做了对 i & 1
取 xor
的操作,然后之后就不会了。
wxy 做完 G 题后看我现在的子问题,一下子就知道怎么写了。
然后封榜后把 M 题的大致做法出了,不过我当时不大相信,因为复杂度完全不对。所以没敢打断戴佬写 F 题。
赛后看题解结果真的是这个做法。后来补题的时候 20min 写出来了。
最后看滚榜的时候,在银首的位置,离金只差 20min 的罚时。
或许少一发弱智错误就金了,或许我没被 B 卡这么久就金了,如果我能果断一点做 M 题就金了。
虽然表面上不算战犯,但是我这么弱其实已经算是战犯了吧。
太多的遗憾留在了南京。
ICPC 杭州站
最顺利的一集,虽然最后仍然有两道题没搓出来。
开局我看了一道 medium-easy 的题并鉴定为签到,十多分钟队友把两道签写完的时候我上去写,WA了一发。
想到了一个特例,等队友再签完再签完一题,确认后交了。
然后再讨论出了一道单调栈数学题。
疑似偷听了隔壁的做法,队友过了 F。
后来 wxy 神,又想出了 B,稳金了。(看了下榜这题没做出来也是金)
不过,封榜后,I 题一直没做出来,很遗憾。
不过我倒是一直没什么值得遗憾的,因为所能拿到的所有奖都超过我对自身的预期,每打一次都是赚到,所以感觉很对不起队友,他们的目标应该更高。
CCPC 郑州站
郑州站的时候我已经摆了,当周一直没训练,因为郑州站当天有考试以及已经打过金了,打比赛打到一半就润了,甚至有让队友换掉我和别人去打 ecf 的想法。
赛中就敲了一道题还不是我的思路,还 WA 了一发。
最后没做出那道神秘哈希,银首 * 3。
郑州站的时候,打车经过一个“听党指挥,能打胜仗”,地图上看不到名字,回忆了一下是高中同学的学校(军校),问了问还真是,离我们酒店还挺近,第二天特地出来陪我面基😭
ICPC EC-Final 西安站
体验非常烂的一次比赛。
安排在期末周,队友有考试于是率先打铁。
然后我那周还感冒了。不过到西安的时候其实好的差不多了。
赛前训了两次,其实打的还挺不错的,怎么到现场就狠狠拉跨了。
热身赛的时候场馆特别堵,很难想象这是西工大,办的比郑轻和南航差多了。
然后赛时网还炸了。
正式赛的时候网倒是没有炸,场馆还是非常的傻逼。
赛时三人红温打铁。
我在调一道模拟题,爆搜题,调不出来。感觉自己自认为“引以为豪”的代码能力是不存在的。连续两次被击溃了。
然后队友另一道数学题没做出来,也是莫名其妙不知道为什么,算法竞赛的最后一次比赛就这么烂尾了。
期末考也没复习好,牌子也没拿到,还连累了队友,报销可能也报不上。想去泡温泉还被告知去的太晚了
不算好的好消息:一个赛季之内达成了金银铜铁的全成就。😊
后日谈
如果能用一个词来总结自己的算法竞赛生涯,那就是“幸运”吧。
几次凭借运气拿到了不属于自己的奖,自己的能力可能确实没能达到。也非常感谢和对不起信任自己的队友。
也很幸运能这么恰巧地遇到这么好的队友,希望队友前程似锦,早日出线。
同样很幸运能选择信息竞赛,在高中枯燥的时候获得了另一个提升自己的机会(以及摸鱼的机会),并且打开了计算机科学的大门。
能遇见高中一起打信竞的朋友,至今仍然是最好的朋友们。
虽然现在对算法竞赛的热情已经不再,但是曾经获得的快乐和成就感是无法忘怀的。
虽然上大学之后就再也没给自己贴上打算法竞赛的标签,或者混算法竞赛的圈子。但是算法竞赛的经历仍然是我人生不可分割的重要一部分。
也许以后的路上不会再有算法竞赛,但从这里开始的故事,还会继续走下去。