OI生涯回忆录
前言
看过了很多oier的游记、退役记。当我从酷热的长沙回到西安,躺在自己舒适的床上,在我即将回归whk之时,才猛然发现,这一天,终究还是来了。趁着对oi的记忆依然较为完整,小写一发,以此纪念我热爱的oi。
结缘
我的“码农”生涯,起源于一次偶然的尝试。
那时,我刚刚升入初一不久。和大部分男同学一样,我是一名体育游戏的狂热爱好者,Fifa Online3,NBA2KOL,每到周末,这些就是我消遣时间的最佳工具。悠闲地学文化课,考试考个年级200多名,平常打打球,看看nba,玩玩游戏,怎么看这都是一个不温不火,平凡无奇的“路人甲”。15年的12月,我偶然进到一家机器人编程的兴趣班。看着这里的小学员(基本都是小学生)像拼拼图一样在电脑上拖动语句块,机器人就能沿着地上的黑线行走,我抱着试一试的心态,报了名。
作为初中生,兴趣班的老师没让我用图形化,而是直接让我用arduino写c++代码进行编程。(其实图形化就是把代码语句写好,封装成拼图一样的东西)。随着课程的深入,我从一窍不通到能熟练掌握c语言的语法,并且很快就能将机器人操控地很稳当,成为了那里的“领头羊”。这段经历让我对计算机,尤其是计算机编程产生了独一无二的兴趣,也让我对之后的人生有了个初步的打算:学习Computer Science。
机遇
从小学起,我的数学和英语就明显超乎常人,语文和政史则总是会拖我的后腿,这让我初一的成绩一直排在200名左右。而升入初二之后,事情有了转机。我理科男的优势逐渐显现了出来,每次考试都能排在年级前80名(总共1100多人)。当然,这时的我其实学习状态也没有太大改变,几乎每天中午都要打球,每到周末更是要去交大连着打4,5个小时的球。最疯狂的一次,我5点半就起床,给同学群发了去打球的消息后,6点就到了交大门口。门没开,我就直接翻了过去。现在回想一下,如果当时能用更多功夫在学习上,我稳定在年级前50,甚至前30都是没问题的。
初二升初三的暑假,学校要选拔创新班直升高中部。我作为年级前百,也是顺利成为了这108将中的一员。当时学校对创新班的定位就是提前学习高中文化课内容,提前学习竞赛。记得初三的第一堂信息课,信息老师---也是我接下来的竞赛教练,给我们介绍了信息学这门竞赛。省一?noi?签约清北?这些名词,是我以前从来想象不到的,世上竟还有这些好东西!一下课,我就和老师谈了话,说我有c++语言基础,希望能加入学校的信竞团队,学习信息竞赛。当时的我,并不知道这门竞赛是算法竞赛,以为这就是和机器人编程类似的东西。
刚开始的那段时间,我是受到特殊的优待的,因为我不用去学习c语言的基本语法。这让我更加飘飘然了,记得当时一个简简单单的高精度加减法,课件只有50多页ppt,我却看了一下午也不知道它是在干什么。那时教练一直强调“想要学好这门竞赛,只有多刷题”,我就很不理解。就这样,等基本语法和一些简单的东西学完后,我已经没有任何优势可言了。第一次考试,cjy2003轻松AK,我却看着六道题的题面发呆,不知道要干什么。那时的机房很热闹,光我们两个创新班就有30多人在学竞赛。我才意识到,这个竞赛和机器人完全是两码事。
从我们这届创新班开始,学校的政策悄然发生了变化。也许是前几届创新班中考成绩太差,说直白点就是去搞素质教育了,我们在初三这一年也和在初中部的普通班一样全力复习中考。这一年,每周我们只有周天一天的时间学竞赛,平时因为家住得比较远,来回都得一个多小时,在家里也几乎没有刷题的时间。Swzhao因为考上了少年班不用中考,6月获得了一次出去集训的机会,回来后立马成为了我们这一届的前三强。
初三这一年就这么过去了。中考犯了一些sb错误,但也算是中规中矩,拿了684分。
信心
暑假,老师让我们每人最好选上两门竞赛。我当时另选了一门化学,因为初三也一直在做化学老师推荐的一本高中的紫皮书,有了一些化竞基础。就这样,我上午听信竞课,下午先去上两小时化竞课,回去就打一个多小时模拟赛。cjy几乎天天AK,zsw,hxw等人也比较有优势。因为考试时间比别人少两小时,加上实力也不怎么地,除了有时能快速切题拿到rk3以外,名次基本上都在10名左右。
高一开学了。每周的竞赛安排是这样的:周四晚上是化竞,周五晚上是信竞,周六有半天化竞,周天全天是信竞。兼顾两门竞赛,又不能落下文化课,这段时间真的是很累。noip2018越来越近,我却连背包是什么都还不知道。化竞也基本上是摸鱼的状态,上课啥都听不进去,回去也不完成化竞作业。10月中旬化竞又增加了周一晚的课,简直是雪上加霜。
省赛前两周,我暂时停掉化竞课,晚上专心冲刺noip(当然文化课并没有停)。那几场考试,考得真的超级烂,爆零并不是什么新鲜事。
noip2018,可谓是我oi生涯的一个重大转折点。Day1,我用可以被卡到\(O(n^2)\)的分治做法,码了100多行过了T1,T2,在我完全不知道完全背包是啥的情况下,我真的写了个完全背包,考完后还天真地以为自己创造了一个新算法hh~,T3乱开数组MLE了,就这样拿到了200分,Day2,我用两个小时写了200多行切掉了T1。就这样,我的第一次noip拿到了343分的成绩,在全校高一选手中排名第二(第一是集训队爷cjy2003,考了530分左右),全校排名第六。这次考试,让我发现了自己在oi上的潜能,也极大地提升了我的自信。
这之后的12月集训,我们几个高一的“领先者”被分到了省选级别的A层。那10天实在无线自闭中度过的。连状压dp,最短路什么的都写不熟的我们被sam,群论,计算几何,平衡树这些东西搞得头昏脑涨,但也见识到了oi这门竞赛的博大精深,也算是开了眼界了。
因为省赛考得很好,寒假本有去WC2019的机会,但我放弃了这次的机会,毕竟差距太大了。接下来的几个月,我终于开始潜心刷题,化竞课去的越来越少,晚上的cf能打的就尽量打。就这样,我和zsw,hxw,yzj升入了小A层(cjy和其他高二大佬在A层)。
分心
高一下刚开学,在和教练商议后,我立即停掉了化竞,专心搞oi。每周下午三节课后,我们就来机房刷题,周六的自习时间,我也经常一个人溜到机房,学习省选算法。记得有一个周六,我用一下午的时间搞懂了SAM的原理,高兴了快一周。而周天全天也都用来上竞赛。这段时间,我将noip的算法掌握得比较熟悉,也偷偷学了一些省选算法。每周两场的模拟赛,我们小A的三人(hxw这段时间主要精力在化竞上)旗鼓相当,zsw思维灵活,yzj得分稳定,而我则是十分飘忽不定,有几场考得非常好,也有因为粗心从AK挂到不到100分的场次(那时我还没有写对拍的习惯)。但一切都还算顺利。
4月,我受到学校机器人队的邀请,加入了学校机器人队,代表学校参加了Robocup的中国区选拔赛。作为年纪最大的队伍之一,我们发挥有些失误,策略上、比赛的准备上都有做得不那么妥当的地方,最后只拿到了第五名。本校的另外一支队伍拿了rk3。六月份,我们收到了一个世界赛的名额(中国有两个名额,但第二名放弃了参赛机会),因为我们的另一支队的队长无法参加比赛,我就顺理成章地成了新队伍的算法总架构师。我们在学校搞了半个月后,飞到了Australia参加比赛。最后是排在了中游偏后的位置。考虑到其他队准备的时间都在一年左右,甚至更长,我们这个成绩也还算说得过去。因为机器人,我耽误了一个多月的竞赛,也不知道会有什么影响。
去搞机器人前的6月集训,可能是因为其他初三的大佬都在准备中考,这次A层集训,我在前七场模拟赛的总分一直排在第一名,最后也拿到了rk5。这次胜利让我稍稍有些许松懈。暑假搞完机器人回来后,有大把时间刷题,我却除了完成模拟赛的改题任务,打了几场hdu的多校比赛,切了一些很简单的签到题,就没怎么刷题了,省选算法也有点落下,cf也没怎么打。
随着NOI2019的结束,学长们都退役了,cjy2003史无前例地进入了国集,我们也要升入高二,挑起xajdfz的竞赛大梁了。
重挫
9月,CSP临近带来的紧张感蔓延着。zsw去交大上少年班的预科二了,学oi的时间也少了,小A层就剩下了我和yzj,hxw。一周的模拟赛次数增加到了3次,有事甚至是4次。我的成绩虽然还是不太稳定,但总体来说是小A层最好的(但其实我们的成绩都相对较低,我的成绩还算凑活)。这段时间,我也重新拾起那个才是specialist的cf号,有cf就一定要打。我cf的rating提升得很快,到了11月,我已经拿到了candidate master(1900+)。CSP考前的最后一场模拟赛(欢乐赛),我只用了30分钟就AK了,而其他人则是不同程度地挂分,不会做。我虽然很紧张,但感觉一切都处在正确的方向上,前路一片光明。
谁知,等待我的,等待xajdfz的,是令人绝望的黑暗。
D1T2死活过不去大样例,写的50分暴力居然也过不去,最后只有10分;错误地早早放弃D2T1,还把部分分条件看错了,最后只有12分,D2T2还是死活过不去,最后写了个\(O(n^3)\)暴力32分草草收场。出考场,除了想哭,脑子一片空白,队友们安慰我的话语,只能让我更加伤心和懊丧。那天天本来是晴的,考完试,准备骑车去地铁站的时候,突然下起了倾盆大雨,下了十几分钟就停了(这是真事),好像老天也在为我默默哭泣。
那是我人生最灰暗的时刻。什么noi,什么清北冬令营,都在我手中被亲手葬送。
考完回学校用民间数据估分,209,可能连省一都拿不到的分数。hxwD1T2貌似是文件错误,白白丢掉100分,比我还要可惜。yzj也发挥地很一般,zsw是我们几个人里唯一有希望上300的(当然cjy2003不在考虑范围内)。
很快出分了,果真是209,在SN只能排在30名左右,hxw和yzj,还有B层的高二oier们,都考得不温不火,在200分左右。最后虽然我们学校平记录地拿到12个省一,但只有cjy一个高分。
那天下午的竞赛课,桌上摆满了零食。大家欢声笑语,各种才艺表演,我却在一旁偷偷抹着眼泪。今后,这个机房,再也热闹不起来了。
B层的十几人全部退役,hxw和yzj也在一番定夺后选择了退役。zsw虽然省赛考得还行,但学业压力比较大,也很少有时间来搞oi。
但我,还不想就此放弃。我打了这么多场cf,比他们在oi上更用功,凭什么要轻言放弃?
单车道行雨击面,风扫叶落割脸脉。壮志凌云赴考去,心灰意冷归还来。拳拳信仰岂可摇?漫漫蜀道难割爱。会当卧薪图再起,笑对千磨与万碍。
这首诗收录在我们的《创新班诗词选集》中。虽然写得很生硬,但我就是这么倔强。面对黄昏的霞光,我相信,只要足够努力,翻盘不是没有可能。
逆转
CSP后,我重新拾起省选算法,开始了新一轮的自学+刷题。cjy给我提供了IOI2020国家集训队作业,我也是刷了几十道题,虽然思维难度相比之前有了质的飞跃,不再是一步就能出来,而是要层层推导,循序渐进,但我并不怎么害怕,因为只有多做难题,思维上才能有较快提升。这段时间的模拟赛的难度也陡然提升,尽管大多数时候都只能交上去三个暴力,甚至连暴力都不会写,但我还是并不担心。我给自己的定位并不高,我不需要,也没时间达到金牌选手的水平,但一定能有Ag的水平。
12月集训,我的排名基本稳定在前8,有时考挂了甚至会被本校高一学弟吊打。最后总分排在第10名。1月份又去了趟外省集训,回来后疫情就比较严重了,也没法出家门了。
高二下学期,4月20号之前一直在家里上网课。这段时间我并没有选择停课,白天学文化课,晚上写写题,要停课也只是翘一个下午的课来打模拟赛,cf也照常在打,升到了master(2100+)。回学校后也是差不多。这段时间的三场NOI Online,考得一场比一场烂,前两次还能有200+,第三次差点跌出获奖名单。不过我观察了一下我在SN的排名,好像每次都能排在第5左右,这一方面给了我些许信心,但其实也挺不踏实的:可能其他人都没有考这个东西。
6月初,我申请了停课,开始省选最后的冲刺。只有8个名额,想要翻盘,既不能有任何失误丢分,又得“稳中求险”,尽量多想一些正解。省选前的十几场模拟赛,题目难度都挺大,看到别人都能切掉,自己却只能攥着三个可怜的暴力,真的挺沮丧的。
省选前的最后一场模拟赛,我被高一的dinlon吊打了,感觉真的没有希望翻盘了,连高一的可能都考不过。那天晚上睡得格外踏实,想着明天尽最大努力考完,就回去学文化课了,反正也学得不差。
于是,250天后,我又坐在了xgdfz的考场内。
这一次,迎接我的是光明。D1T1果断弃掉,T2拿满部分分,T3用假做法水过,D2T1轻松切掉。看到自己省选分排名第三,总分第四进了A队,心中悬了八个月的石头粉碎了。我,真的做到了。
省选详情可看这一篇
享受
进了省队后,心态就稳定下来了。尽管这之后的两个月,不是高强度的专题刷题训练,就是令人自闭的模拟赛,但我的脸上总挂着笑容。能进入省队,坐在自己的机位上,享受最后两个月的竞赛时光,这是我最大的幸运。尽管加入了很多强省的神仙,尽管被吊打成了常态,尽管改一道题平均要花两个多小时时间,尽管几乎写不出正解,但每当我看到自己在榜上用优秀的暴力拿到较高名次,每当我改的题的verdict从WA变到TLE,最后终于AC,每当我解答了学弟的一个问题,那种快感,是我在学习任何事情的过程中从未感受过的。
到了收获季的八月,WC和APIO考得稀烂,NOI的Day1又一次错误地弃了T1,但我的心态没有太大波动。之后在Day2成功稳住,拿到了和CSP几乎一模一样的分数,抱走一块Ag。国赛详情可以看这一篇
手中紧攥着Ag牌,想起那个刚进创新班的,懵懵懂懂的自己,想起和我并肩奋斗的队友们,想起亲切的学长、可爱的学弟,两位母亲般的女教练,想起那台“信竞专用”的乒乓球台,想起那些洛谷上收藏了很久却一直没动的题,想起自己立下的cf上Grandmaster的flag,想起那个奋斗了无数个日日夜夜的机房......
终于不用上课赶作业给晚上写代码挤时间,终于不用在电脑前一坐就是5个小时,只为了解三道题,终于不用每天都去学校,终于能在家放松一下,终于能捡起那颗篮球,将汗水挥洒球场。
失去了很多,也得到了想要的东西。既然退役了,就面带微笑,走向前方,等待每一天将要升起的朝阳。对于oi,也许我还有很多东西没有经历。但那又怎样呢?相比倒在CSP、倒在省选的众多高手,我已经是幸运儿中的幸运儿。也许我的oi生涯不像其他大佬一样荣誉满堂,也许我太过平淡,会很快消失在oi的历史长河中,但好在,这段unique的记忆,我会永远铭记于心。不求无憾,但求无悔!
------------------------------------2021.8更新
更新我的高三whk之旅,写到另一篇是不想破坏这篇blog的完整性。