Goodbye,OI——八年 OI 回忆
这篇文章是 2020 年 12 月写完并发到洛谷上的,2021 年我把它删掉了,现在是 2022 年,我又重新上传了这篇文章。
序
这篇文章完成于 NOIP2020 前一天晚上。
笔者语言水平不高,表达能力欠缺,无法用文字表达出自己对 OI 的深情,但希望以这一篇文章,记录下我人生中一段重要的时光,将来回首这段经历,或许也会有所感慨吧。
启程
我第一次写代码其实是小学了,刚开始的时候,因为各种原因,我并不怎么认真学,也没什么水平,甚至不知道 NOIP 是个算法竞赛。
2013 年
小学四年级的时候,我报了一个叫"编程初步"的课,然后用 C 语言写了个输出一段话的程序,当时老师没让我们写 helloworld,说让我们输出自己的名字,然后我发现这 ide 还不能打中文啊,然后也不想打拼音,就脸滚键盘随便打了点东西上去,输出。(那个 ide 是 DOS 的,非常垃圾,甚至没法用鼠标,只能用键盘一行一行移动)。
这是我写的第一个程序。
五年级的时候莫名奇妙被拉去打了个比赛。一年多后我知道这比赛原来叫 NOIP 小学组。
2014 年
参加了 NOIP2014 PJ,以 100 分的成绩获得了二等奖,那次填错年级了,填了初一,学校填的也不对,于是 OIerDB 就有两个我了。
2015 年
初一的时候我开始沉迷网游,然后就颓了,不好好学习了,周末上课也都在后面自己打游戏(
NOIP2015 PJ 100+100+40+20=260 拿了一等,我现在还是想不起来我 T4 怎么拿的 20 分,我也找不到我代码了。
2016 年
这一年我感觉我完全就是颓过去了,当时我特别自以为是,特别自负(其实现在还是有,你们应该能看出来),我觉得自己 NOIP2016 能考全省前五,NOIP2017 随便考考就能 PJAK,TG 省一然后保送高中,2019 年一定能进省队,然后一直觉得自己是全年级最强的,然后也不学新算法,不愿意练习做题。
其实当时我连 dfs 都不会,真的是垃圾的不行啊,做题量一百左右还都是洛谷上红橙难度,但我好像根本没意识到这些。如果有个人当时能在我面前打完一遍线段树然后告诉我这是个非常非常基础的东西我会意识到自己的菜吗?不会。因为我会不相信线段树是个基础的东西,我会觉得这个是 NOI 水平的。
NOIP2016 100+90+40+35=265
2017 年,NOIP2017 前
当时我的状态比前一年没好多少,还是很菜然后很自以为是。
去了 HY(我初中) 的 OI 晚课学习,当时还是同学在讲课,然后我完全听不懂,我也不听,上课讲邻接表,我觉得用邻接矩阵挺好的,邻接表什么玩意,有什么用吗,还比邻接矩阵难弄,不学了。我周末在课外上的 OI 课,被换到了另一个更高级的班,不过我刚过去的时候他们讲的东西大多数还是挺简单的,CF 选 difficulty 不到 1500 的题,但当时的我是什么水平啊?当然是普及水平都不到啊,连 dfs 都不会。
NOIP2017 前学会了 bfs,dfs 还是不会,存图还是只会用邻接矩阵。考前我非常的飘,以为自己一定能 AK PJ,TG1=。我也不知道我当时在想什么,但是,我就是做出了这些事情。
转折
2017 年末
NOIP2017,我爆零了。
NOIP2017,我爆零了。
NOIP2017,我爆零了。
说三遍不是为了强调啊,而是因为我真的爆零了三次(((
初赛我对答案下来是 80(我把答案记在纸上,不会错),最后成绩却不到 60,我也不知道为什么,后来推测是答题纸没选语言。
复赛 普及组 少打头文件 爆零。
复赛 提高组 注释文件输入输出 爆零。
我感觉自己是前无古人后无来者了啊(((
考完非常自闭,考前还非常膨胀感觉自己是稳省一的(事实上,没爆零的几道题全是完全不对的做法,加起来挂了负一百分左右。虽然如果 D1T1 没爆零我确实就省一了),结果爆零了。
后来花了一个月冷静下来,当时很多朋友拉了我一把,非常感谢他们。
之后我终于愿意沉下心来学习了,也不再为所欲为了,至少我觉得自己从一个傻逼小学生变成小学生了。
有时候真的是挺奇妙的,当时感觉自己爆零了真的非常非常自闭,现在看来要不是这次爆零,我可能很长时间也没法清醒,也可能不会因想为自己“一雪前耻”而立志于进省队。
不过这时候确实已经晚了,再加上当时考试心态确实不好,我一模成功爆炸,我本来想通过自招进华东师范大学第二附属中学(初三一开始就想去了),但是连自招门票都没拿到。当时还是挺崩溃的,毕竟一模前的正常考试我排名基本都在班级前 25%,这是个很好的成绩了, HY 每年进四校的人超过一半。但是之后我听说没门票也能考,于是我就去了。
但是,有时候命运就是这么奇怪。
我被分到了一个奇怪的考场,那个考场的监考老师写错了考试时间,把考试时间写的比正常时间多了一个小时(我事先是不知道 efz 考试时间的),而且,一直到考了实际时间的 2/3 的时候,他才改过来!
自招考试是很多科目放在一起的,我刚开始看时间够,就花了很多时间做数学,最后我数学拿了 A,其它全是 CD。
请试想一下我当时内心的想法。
。。。
最后 efz 没要我,连分部(efzzz)的自招门票都没给。
于是我就去了 qb 和 nm 考自招,都进了,我想了想,不想去 nm。
2018.5.19 正式自招签约 qb,结束了我一个短暂的梦,开启了我另一个也很短暂的梦。
新的开始
我 OI 生涯最后的 22 个月,也可以说,有且仅有这 22 个月,我认为这是一段很充实的时间。
在一个 whk 抓得很紧,同时 OI 又不太行的学校里,学 OI 确实是一件困难的事情。我也没法免掉写作业,于是每天抓各种时间写作业,不行就晚睡,就是为了晚自习挤出每天三个小时多一点(很多时间并不到)连续的时间学 OI;同届的 OIer 只有我一个想冲省队,学校课程的进度也很慢,然后我大多数情况下都是在自学,很多时候都很迷茫,走了很多的弯路,犯了很多的错误。但也正是因为如此,我才觉得这段时间更加值得回忆吧。
高一
高一的时候感觉还是很心智不成熟,也很浮躁,但是,至少我开始认真学了。
大概是 10 月某个时间吧。打开了自己好久没上的洛谷,然后看到了一个叫咕值排名的东西,当时排第一的是 chen_zhe,我就看他个人主页,然后发现主页还多了个题目难易度统计的东西,然后我看到 chen_zhe 蓝题紫题数量都接近 200,我又看了后面几个人,有的人总 AC 破 1k 黑题破 100,然后我又看了看自己的:0 绿 1 蓝 0 紫 0 黑。瞬间感受到了自己和他们差距有多大。
10 月我大概就开始稳定做题了,当时做蓝题还基本不行,只能做做水题找自信,然后算法也是基本全不会。那段时间也下了决心要学好 OI 了,当时目标是至少要拿省一,希望能进个省队。
当时想着高二不进省队的话 OI 生涯就只剩 18 个月了,有点难受,感觉还没开始就快退役了,同学跟我说你才高一你还年轻,现在想来确实是。
然后 NOIP2018 考的异常的好,100+100+50+76+15+16=357,SH Rank 39,发挥远远高于实际水平,然后当时感觉自己 NOIP 好像离队线(~380)不远啊,要不试试高一就冲个省队。
当时向教练要到了机房权限,我就每天晚自习过去刷题刷题。我从 NOIP2018 到 SHOI2019 四个半月,我在那里学完了提高所有知识点 + 网络流 + 树链剖分(虽然学的都比较浅),打完了洛谷试炼场普及练习场+提高历练地。省选斗兽场也做掉了几个部分,但是现在洛谷试炼场没了,我也想不起来了。四个月刷了四百道还多。
我也不知道我怎么做到的。不过当时做题习惯不好,有时候我题解根本看不懂但就是想 AC,就对着题解打代码,其实自己根本就不会这题;而且我也思考的太少,有时候想一会想不出来就看题解。我现在想来也不知道自己为什么会这样做,确实是完全没有意义啊,还是太急太浮躁了吧。基本到了高一暑假我才把自己做题习惯改好。
2019 年初的时候,我突然明白了 NOIP 是算法竞赛,不是编程竞赛,我考了六年 NOIP,才终于明白 NOIP 是什么。
省选的时候,我真切的感受到了自己与其他人的巨大差距,感觉到了一题都不会的绝望。
写了第一篇游记。
省选完有点自闭,当时照着那个试炼场,去学了 FHQTreap Splay 和 LCT,然后除了 Splay 都没弄明白。5 月报名了 APIO,APIO 是学长带我去的,教练也去了。那是我第一次见识到全国高水平 OIer,我去了之后就感觉我不应该在那里,什么都听不懂,学长跟我说的东西我也好多都不懂。比赛靠线段树打了点分,然后感觉自己什么都不会,最后 13+15+60=88 Fe。APIO 以后学长就去肝 PhO 了,后来学长考进了 PKU 图灵班,太强了。
高一暑假
整个高一,我都在想着学知识点学知识点,把知识点学完,想着自己要做难题做难题,有一天我突然就想,这样真的对吗?后来我就做了个决定,整个暑假就不学任何新知识点了,要先把已经学过的知识点都完全掌握,然后也要把基础打好。
暑假里我打了十几场 Codeforces,中间好几场因为 FST 掉分,然后 rating 一直在 1800~1900 浮动,最后暑假快结束的时候打了两场,从 Expert 打到了 2080。
暑假里,我加了 UOJ 和 LOJ 群,还没加群的时候,我总想国集选手之间难道不会互相交流吗,毕竟之前我还以为国内 OJ 只有洛谷和 code[VS](
我在学习做题终于稍微冷静下来了,改掉了以前一些不好的做题习惯。心态也稳定了一些,至少不会在公开场所发疯了(
我也通过社区认识了不少 OIer,由于同校 OIer 都没有冲刺省队的意愿(大概是?),当时我也只知道洛谷和 CodeVS 两个国内 OJ,我就开始在洛谷的社区说话,后来 2019 年 3 月底加入了 Hello,luogu 群,暑假加入了 LOJ 和 UOJ 群,也加了一些大大小小的其它交流群,在 OI 群里,大家都是非常友好的,在水群的过程中我认识了很多人。我也算是进入了 OI 社区。
在 OI 社区里,我见识到了更大的世界。与 OI 相关的很多知识,一些 OJ,OIwiki 这样的网站,类似 graph editor 这样的一些工具,都是在与他人的交流和围观群友交流之中知道的。我也认识到了关于整个 OI 界更多的信息,了解 OI 圈的亚文化(可以算是?)。同时,我也感觉到自己和他人的差距。如果我没有进入社区的话,我想,我可能直到退役甚至还不知道有 UOJ 这个 OJ,也更不必说别的什么了(
OI 社区一直给我一个非常好的印象,我非常喜欢 OI 社区,大概是因为大家都有很高的道德和学术水平,也都很能理解彼此吧。
OI 是竞赛,竞赛就有竞争。
但我觉得,我们更多的是在同行。
小机房
这是我们的小机房。
这是我梦开始的地方。
NOIP2018 后,我一直想能不能找自习时间有空就自己来机房练习,可是学校不让教练借出去机房钥匙。后来我想起楼下有间教室,里面有 9 台电脑,我们教练还有权限,我试试问教练能不能去。后来教练同意我用了,还给了我权限,我的学生卡也可以开这间教室了。
这间教室代号130,名叫物联网实验室,之前是专门用来创赛的教室。不过里面有很多装了不知道什么东西的盒子,可能这间教室也做过劳技教室。
之后,我就每天把晚自习翘掉,能翘的课都翘掉,就来 130 写题学 OI。
那时候或许我在别人看来完全就是“疯了”。
说是小机房,这个机房确实很小。
小机房在 4 号楼一楼走廊的尽头,是整条走廊上唯一一间没有门牌的教室,只有用马克笔写上的 130 三个大字。很多时候,这是晚上整条走廊唯一一间亮着的教室,不过 3 楼的物理实验室也经常亮着灯,或许和我们是一路人吧。
小机房有 9 台电脑,对着走廊的有 4 台,对着操场的有 4 台,还有一台在教室正前方,是教师机,我一直都是用靠操场那排最左边的一台电脑。中间是左右各两排桌子,后来又弄来了四台新电脑,放在右边的桌子上,一排两台电脑,我之后就开始用第一排靠左的那台。
小机房前面有一块很大的黑板,当我们讨论题目讨论算法的时候,就几个人聚在黑板前一起写。我们把纸条包在粉笔周围,另一头露出来,这样写字的时候自己手上就不会有粉笔灰了。黑板的边上是一块投影屏,我们在那里一起在 CSP2019 前看了洛谷月赛讲评。
和我一起在小机房的,是同届的所有 OIer,后来学弟也来了。我学 OI 的大部分时间,都是在这个小机房里度过的,这里承载了我们的快乐和痛苦,见证了我们的努力。
现在,小机房的权限已经交给了下一届、下下届的 OIer 手中,希望他们能实现自己的梦想吧。
强校,弱校
我是一名弱省弱校 OIer。
我所在的学校,whk 很强,是 SH 前三,每年进 SJTU、FDU 两所大学加起来能超过 100 人。
我所在的学校,创赛很强,好几年都一等数量都是 SH 第一。
我所在的学校,OI 很弱,在我来之前,历史上没有过省队,2010~2017 一共只有三个省一。
当然这也符合学校的现状,大概是为了避开和 shs efz 直接竞争。
我自认为我能感受到强校和弱校的差距,在 whk 学习上,老师都是非常强大的,而且教学计划、练习等等都非常完善,有很多自己编的教案,对高考的了解也是非常的完善。学习氛围也比很不错,既能有帮助与支持,也有些紧张感(适当的压力还是可以成为动力的)。另一方面,SH 英语高考改革后,题目和评分标准都不公开,但我们学校的老师因为会去批卷,就会很了解评分标准。
在创赛上,学校每周有两节课专门给学生做科创,学校建立了四个平台,数不清有多少间科创教室(包括 130),有很多很强的老师带着我们。并且学校也有丰富的经验、充足的资源。(当然,我也体会到了一些弊端,比如为了自己平台拿的奖多一些,平台之间存在一些恶性竞争,对于 OI 强校,我也知道有卡校线的弊端,但我还是觉得在强校学习是能获得更高的水平的)
但是 OI 上,我们缺乏资源,我们缺乏经验,我们缺少时间。
更甚的是,whk 强给了我们一些 whk 和 OI 都不太强的 OI 弱校并不存在 的弊端。
校内进度是只到联赛的,也比较慢。不过后来教练也请了一些人来上课,讲一些难的东西。
学校很看重 whk 和竞赛都好的学生,而并不希望学生因为 OI 耽误 whk。
学生在 whk 和竞赛的选择下,大多会选择 whk,毕竟直接 whk 基本进 SJTU 和 FDU 希望非常大,而且 qb whk 的压力其实并不小(虽然我自己感觉高一压力不大),竞赛会花费很多时间。有很多选择竞赛的学生,花的时间也并不多,可能就是抱着”省一最好,没省一也无所谓“的态度。
whk>创赛>数理化竞赛>OI(生物竞赛不了解情况,地位应该和 OI 相似),我校现状大概就是这样,OIer 大概只能做人下人下人下人了(悲
或许,只有进个国集,才能拯救我校的 OI 了,但我知道我做不到。
或许,进个国集,也不够。
虽然说现在网上各大 OJ,博客很多,自学有足够的资源,但是要基本全靠自己开路总不是件容易事。况且从 NOI 获奖名单也能看出来弱校 OIer 的巨大劣势了。
而且像我这种憨憨,看到题目有“雅礼集训”前缀,以为是公开了校内集训题,就一直不知道可以去强校集训,不过即使我知道,估计也不会去。
然后除了联赛前一周时间,学校都不能停课,我两年一共就停了 18 天课,NOIP2018 一天,CSP2019 初赛 3 复赛 5,2020 省选争取到了 9 天,算上运动会是 20 天。
不过其实自己比那些连 OI 教练都没有,全校就一两个人 OI 的学校比,还是好不少了吧。
迷茫的坚持
非常奇怪,到后面,学校和家长其实也都支持我了,但我自己反而就开始想放弃。
开学时前听说来了一位很强的学弟,初三省一,后来开学后他果然来吊打我了。
不过我很开心,越多人吊打我我越开心。在这个 OI 弱校,能有一个人和我一起奋斗,真的很好啊。
当时我感觉接下来要是只自学,好像有点不行,就去 mr 那边上课了。
CSP2019 前停课的 5 天感觉是我过的最快乐的一段日子了,也是小机房最热闹的时候。
联赛之后,因为以为自己 T1 会被卡成 50 自闭了很久,最后没有。年底的时候看了看获奖名单,然后老师分析省队只有 8 到 9 个人(还因为小朋友作弊扣了一个名额,非常难受),把女生名额去掉,efz 一定占满三分之一,去掉,还有去年就进省队的人,......
算着算着发现自己根本没有希望进省队。非常绝望啊。虽然我正好卡着队线,但是 jtl 肯定能翻的,学弟 344,也可以超过我,300~315 分段有很多人我认识,都至少是和我同等水平的。
但我想试试,试试吧。
寒假的时候以参加 WC 为理由把寒假作业都翘了。
后来啊,后来疫情突然来了,WC 没了。不开学了,上网课了。
又是一个突然而来的转折。网课期间排课很松,空闲时间非常多,我想这我不是有很多时间学 OI 了吗?那我肯定要抓紧时间肝啊。
寒假的时候 MdOI 准备办比赛了,我出了一个 R1C,第一次给洛谷比赛出题,非常高兴。之前只是给校内模拟赛出过两次题。
疫情期间开了一个坑,叫做国家集训队作业,我现在也不知道这是不是个正确的选择。
说实话,这套题对我来说难度确实是过高,就是,过高。但是我当时觉得,自己需要一点挑战。
最让我难受的,是我感觉自己的水平一直没有什么提升,准备省选的时间里我感觉一直都比较迷茫,不知道应该怎么训练才好,平时就是找比赛打、板刷 OJ、搜博客学知识。虽然新知识慢慢在学,做题量也多了,难题也做了,时间也花上去了,但是感觉自己并没有变强。我找不到原因,我找不到解决的方法,但是省选在一天天的临近。
我想,我还是享受最后的学 OI 的时光吧。
后来省选延期到 6 月 20 日了,但是上海 6 月 6(还是 7?)日地理高考,班主任让我暂时把 OI 停了去弄地理,我看到自己高考二模考了个 B 还是 B-,我感觉这样下去不行啊,还是得抢救一下。最后居然考了 A+(折算成等第后满分),当时感觉就是挺扯的,我好像也没怎么努力,怎么就考了个 A+。高考完之后果断停课两周,但因为一些奇怪的原因只停了 9 天。
省选 Day1 我直接暴毙了,60+40+0。T2 我明明会斯特林数,考前几天还做过斯特林数的题,但就是没做出来。 但是,命运却就是这么奇怪。Day2 T2 出了道板子题,01Trie 树实现全体 +1,我会啊,AGC044C,然后这题能写的部分分又少,我直接 A 掉了,靠 A 了这题进了省队。
挺感慨的,我真的做到了我之前认为不可能做到的事。
梦醒之时
6 月最后一个星期我滚回去弄期末考了,7 月还上了一周课,晚上和学弟 vp 了几场 CF,到最后两天我就开始颓了。
7 月初打了一整个星期的 World of Goo,刷了全关 OCD。感觉自己省选以后明显比省选前那段时间颓废很多(
虽然进了省队,但当时的我还是比较难受,因为我知道,我只剩一个月学 OI 的时间了,我还有很多很多想做的事情没有做,而其中有不少以我当时的水平不可能做成,以后也没机会去做了,我也舍不得就此离别。
我当时的想法也很奇怪,我因为自己靠身在弱省+靠原题进 A 队感觉自己是个傻逼,配不上这 A 队的名。
报了 WC 和 APIO,但两场比赛打的不太满意,因为自己全程都在写暴力,基本没用上什么算法。
WC 的时候,最后有一个座谈会,我记得,有这样一句话:
“我是一名普通的 NOI 铜牌选手。
我们都有光明的前途。”
我总感觉,自己 OI 集训队实在是太遥远太遥远了。
而这句话确实给我印象比较深刻。想想自己,我真的是太普通了啊。
后来就是 NOI 了。
没想到,自己有一天也站到了这个赛场上,非常的感慨。
感觉自己这辈子没白过啊。
NOI 前看了看题,感觉自己 2016~2019 只有 2016 年发挥好点可以 Ag,其他都 Cu,然后看了一下能不能考到当时的铜牌前 50,感觉好像还可以。
NOI 的时候见到了很多神仙,面到了 ix35 和 EA。
不过大多数人我都没敢和他们说话(
NOI Day1 前感觉自己必须要把 D1T1 A 了。结果我不知道要向量乘矩阵,然后就一直做不出来,心态直接就崩了,T2 成为了数据结构学傻的选手。
不过这都无所谓,主要是 T3,我把前 24 分部分分和后 16 分部分分并起来的时候不知道出了什么问题,前面 24 分错了,但是我合并后只测了后 16 分的数据,是对的。
然后我 Day1 65+32+16 就直接自闭了。
然后,没有社会活动日,第二天直接 Day2,我想前几年 D2T1 好像不怎么难啊,我 D2T1 总能做出来吧。当时看 T2 T3 都根本不可做,连部分分都打不出来,然后做了 3.5h T1,最后的确是想出来怎么做了,但是写炸了,于是 20+12+15=47。
然后看到成绩就知道自己肯定没 Ag 了,有点悲伤。
走出考场的那一刻,我知道自己在也不是个 OIer 了。我成为了一名退役 OI 选手(AFter OIer)。
NOI 后反思过一段时间,意识到自己之前的问题还挺多的,甚至我一场 5h 3 题 NOI 难度的模拟赛都没打过。
我总感觉,我在 OI 上感情还是比较深的。这大概也和我的经历与性格有关。我也很喜欢交流水群,和 OIer 交流的很多,也很喜欢 OI 社区。
我确实舍不得退役。这就好像和相识了 8 年的朋友,到最后 1 年才终于读懂对方,突然有一天,就分别了,并且永远也会再相见了。一切都只剩下回忆了。
梦结束了
尾声
现在回去看自己 NOI 考炸的事情,感觉已经比较释然了,只是我还是始终舍不得 OI 吧。我感觉我多多少少还是有点遗憾。我感觉自己很多东西还不会,不仅是 OI 方面,甚至连计算机基础、C++ 语言基础都没弄懂,甚至连 github 都不会用;我感觉自己接受了很多的帮助,却从来没有向 OI 界做出过什么贡献,甚至对自己学校 OI 的贡献也没多少。有的是我水平不够的问题、也有一些是自己可能能做到但没下这个决心、也有的就是因为自己太怠惰就是不想做。我一直很想成为一个高水平选手,但其实确实是好高骛远,不过也没什么好想的了啊,我觉得 OI 已经让我收获够多了啊。
你会后悔学 OI 吗?
......
我不会后悔。
我真的学到了很多东西,感受到了很多东西。
我觉得我真的看到了另一个世界。
致谢
感谢家人对我的照顾和帮助。
感谢各位竞赛老师给我的帮助、支持与理解。
感谢所有为 OI 界做出过或多或少的贡献的 OIer 们,感谢你们的付出、感谢你们对其他 OIer 的帮助。
感谢所有在小机房和大机房一同努力过的学长、同学和学弟。
感谢我在 OI 生涯中认识的所有 OIer 们,感谢有你们一路相伴。
愿我们都有光明的前途!