这篇文章是蒟蒻wyj的OI生涯回忆。副标题(同时也是本站的副标题)"Some dying memory..."
是以撒中虚空层的Game Over界面(Isaac’s last will)中对章节的描述。(我早在搭建这个博客的第一天就选择了这个副标题)
小学时
像我们cz市的大多数OIer一样,我从五年级开始接触到了OI。当时就有老师来我们的小学挨个班询问,希望推荐几个学生去OI。当时的我还不知道OI是啥,觉得可能是和搭机器人差不多的东西?于是就不明不白地报了名。我小学也有一个同班同学报了名。
后来上了课,才发现压根就不是我想的那样。第一天老师带我们做“狼羊菜”这样sb的游戏,我发现太难了,完全不会。但是培训班上就有nb的同学可以人脑搜索出正解。下课后,老师让我们把解决方案画成流程图。之后的几节课里,学习了一些入门题(比如a+b)的流程图绘制。接下来接触了Pascal语言,用的IDE是Turbo Pascal。这几年差不多都是在一个金斌OJ上面做题。发现自己和班上的大多数同学差距还是挺大的,班里有几十个人,记得一整年,最高的一次排名也只有Rank 9。
后来就从初级班到了中级班和高级班,逐渐学习到了数组和函数等等的语法,并且拥有了初步的算法知识。有两个题我印象还是挺深的:一个是要求输入$x$输出(x-1)%7+1
,要求不使用if
语句。当时我完全不会,班上也没有任何一个同学会。后来知道后发现很精妙。还有一个是“丑数”,就是输出第$k$个因数只包含$2$、$3$和$5$的数。当时我不仅不会polylog,甚至连$O(k)$的算法都不会,只会暴力枚举再check。后来知道了可以用队列$O(k)$地生成前$k$个数,还是死活搞不懂,只会硬背代码。然而当时班上的很多同学可以自己想出来。
另一方面,像几乎所有OIer一样,我无师自通了写游戏的方法。现在在我的Github代码仓库中还是可以找到这些珍贵的史料的。我首先使用的是CRT单元(大致相当于conio.h
或者ncurses
库),可以在终端里输出一些彩色的字符。六年级时,我发现了pascal还有个Graph单元,可以做出一些(丑陋而缓慢的)图形界面程序。古文物参观处。然后发现自己的全部兴趣都在写游戏上了!
当时主要是在czsycz的OJ上做题,刷了无数的入门题(其中最难的题大概是输出数字$1..n$的十进制位数之和,$n\le 10^9$,当时这题我还想了相当久),成为了OJ刷题量的Rank 3。
另外还参加了两次省里的“信息与未来”夏令营。这个夏令营的考题也基本都是些入门题,并且评测方法是输入数据写在一张纸条上,要求把输出填上去(所以可以手玩)。第一次我和dwh(以及其他一些我已经记不起来名字的人)住在一个寝室,当时我们用手机互发垃圾短信作为娱乐。第二次就不记得有啥我认识的人了。
初中时
初中是czfls。在我刚进这所学校时,它还有一个活跃的OJ。当我快毕业时已经没人用这个OJ了,现在这个OJ已经不存在了(或者已经换地址了但我不知道)。Ranklist中有一个无敌的xyx。我在这个OJ上完成了线段树的入门(并且我线段树尽量写成标记永久化的习惯就是从这里开始的),写了不少的短码,仅此而已。
初一的时候我参加了普及组。当时我连DP都不会,考试前夜对着维基百科背了下“子集合加总问题”和“最长公共子序列问题”的转移方程。考了个挺垃圾的分数(具体是多少我已经忘了),连省前三十都没有。这样就不能像上一届的大神们一样直接去参加提高组了。
初一下的时候我通过一篇果壳网的文章(已经404了,给的是Web Archive的快照链接)忽然对算$\pi$产生了兴趣。就这样我从FFT开始自学,学了多项式求逆和多项式开根,最后使用高斯-勒让德迭代算$\pi$。终于,我花了几个月写出了一个可以使用100s左右的时间算出$\pi$的前$500000$小数的pascal程序。很高兴。(后来一直到退役,我不断地在学习各种FFT和牛顿迭代的卡常技巧,并且用C++重写过几次这个程序,最后已经被我优化成7秒可以算$2^{20}$位小数。代码在此。)
另一方面,我看了刘汝佳的经典:《算法竞赛入门经典》和《算法竞赛训练指南》。就在这本书上,我学到了Minimax搜索。我对此很感兴趣,就用Minimax加上Alpha-Beta剪枝,花了几个月写出了一个五子棋AI。估价函数都是我一个个if
硬讨论的。这个AI至少可以把Emacs的五子棋AI摁在地上摩擦,也强过大多数的人类。
初二的时候,我还是一个普及组选手。但是当时我啥都不懂,比赛前一夜还在想“普及组会不会考多项式求逆的啊?”,默写了一遍板子。这年的普及组我也考得很差,还是没有省前三十。
由于我在初一升初二的暑假看了《三体》,心中充满了对死亡的恐惧,就觉得每一天都要珍惜时间努力学习。最为关键的转折点是2016年的12月3日。那一天,我完成了圆周率计算和五子棋AI的程序。此前,这是我每天放学回家后用所有时间干的事(写游记之外),忽然空下来了,瞬间不知道该去干什么了。就从那一天开始,我变成了一个颓废的人,整天就在维基百科上瞎jb看,失去了学习的目标。虽然后来我尝试写了PN+ search和一个五子棋的GUI界面,但是都动力不足很快弃坑了。
八年级的那个寒假,我就基本上没怎么写程序了。但是我发现了一座宝藏:Matrix67的博客!这座宝藏大大提高了我的数学能力,也让我对语言学产生了兴趣。从那个寒假开始,我把上面的所有博文翻来覆去看过至少五遍,几乎全部内化为了我自己的知识。还实现(这个代码也是后来用C++重写过的)了其中描述的分词算法,得到了不错的结果。后来我OI中知道的黑科技大部分就是从这个博客里学来的。可惜,写得这么好的博客我就只见过这一个了,再也找不到类似的替代品了。(或许fwjmath的相空间可以算半个替代品?)
在真正的OI方面,我初一下学习了线段树和树状数组。初三上学期准备NOIP提高组时学了下分块。除此之外,初中时(指进scz之前)貌似什么算法都没有学。我从八年级上学期开始转变为了一个C++选手,由于是从《短码之美》一书入门的C,又从C原封不动搬到了C++,所以我的C++码风很毒瘤。
还有省里的JSOI夏/冬令营。去了那么多次,绝大多数的事情我都忘光了。只记得初一升初二时的暑假,我在冬令营里刚刚开始写我的俄罗斯方块小游戏,此时看见上一届的吴双同学也在使用Pascal的Graph单元写程序呢,但是人家和我的境界差得太大了,人家在写Delaunay三角剖分,还会把剖分结果渲染出来……可惜了,我直到退役之前都还没学会这个算法呢……;还记得上一届的张弘弢在寝室里和除了我之外的所有人三国杀,牌摔得贼响……;最重要的是某一次,我围观zc玩以撒,看了好几天。当时我还以为科技2是一个强力道具……
初三上学期参加了NOIP提高组的比赛。这场比赛我发挥得出奇的好,吊锤了czfls的所有人(甚至包括那时的snz),只被某lzq锤了。在我们cz市,获得提高组的国一就可以直接保送scz,免中考和自主招生考试。所以还是挺高兴的。大概就从那时候开始对OI上头了,再也无法自拔。
在OI之外,我学会了更加熟练的编写游戏。我发现配合Windows单元的使用,可以大幅增强Free Pascal图形界面程序的能力,在初一升初二的暑假,我开始写了个俄罗斯方块程序。这是我到目前为止写过的唯一一个上1000行的程序(虽然貌似直译成C++就可以缩短到400行左右?),耗费了我一整个暑假的时间完成。后来我学习了使用Windows的原生API画图,发现比用Graph单元画出来的快得多(并且也可以方便得多地直译成C++)。
成为一个正式的OI选手
进高中之前
从我初三下学期和其他一些tg国一选手一起进入scz开始,我就自认为成为了一个正式的OIer。初三在scz的生活虽然轻松快乐,但是训练时成绩是很差的,与高中生有很大的差距。记得唯一一次打败高中神仙们,是一道泰勒展开的数据结构题。然而当时我连$-\log{(1-x)}$的泰勒展开都不知道……只是猜了猜系数,就莫名其妙地猜对了,于是莫名其妙地过了一道题。
这绝对是我OI生涯中学习新算法密度最大的一段时间。在洛谷上写了无数的模板题,然而实际上这些算法我都只会模板,真正出成题我就完全不会做了。同时,我变成了一个彻头彻尾的C++11选手,离开C++11就完全无法写代码了(虽然直到NOI 2020才开了C++11,虽然他第一次真的开了我就退役了……)。参加了省选,由于之前学过Minimax+Alpha-Beta剪枝的优势在D1T1中拿到了70分。除此之外连暴力都没码全,在省内排名42来着?(不记得了)当时我错误地认为,接下来两年我实力肯定可以变强,并且还有整整7次与清北签约的机会呢,肯定是没啥问题的。也参加了APIO,打满暴力获得一枚铜牌。并且这一年的THUSC,我的确签到了一个(三等)约。(虽然这个约的前提:NOI前100名不可能成立,所以是个废约)所以我错误地对自己的未来充满了信心。
暑假里我和snz等人去交大参加了ACM训练。神仙lzq由于可以去NOI等等的原因没有参加。有幸和神仙snz住在一个寝室,度过了相当快乐的一个多月。觉得对于我来说最大的意义还是培养了独立生活的能力。另一个意义是由于我电脑坏了,只好用交大机房的电脑,从此入坑了Ubuntu,再也回不去了。然而神仙snz在祂上电视的采访中自称,这次训练让祂学会了自主安排时间,从而变得超级强。
高一上
首先开局就被迫参加军训,心态很崩。神仙snz和神仙lzq就不用参加。觉得军训真是一种泯灭人性摧残人格的体验。这个学年的头两个多月,进行了NOIP2018提高组的训练。这是规模空前(也多半绝后)大的一次训练,光我班里就有十几个人参加。由于训练的内容过于久远,我已经快忘光了,只记得那时候snz和lzq还差不多强,两个人轮流霸榜。在NOIP之前的最后几天,我终于变成了一个Linux选手,开始使用五机房老掉牙的Ubuntu系统。当时的折腾记录还留在我的博客里呢。这一段时间是我整个OI历程里最努力的时候。从初三下进创新班开始,我就一直与snz、ys一起在洛谷上刷题,每个月都写了大几十道题。十月份是我刷题刷得最多的一个月,几乎接近100道题了。当然比起下一届的srf等人还是差很多的。
NOIP2018。我彻底崩盘,崩到怀疑人生。Day1普及组sb题都只会写高级数据结构维护,完全背包都看不出来,全场都会的贪心题我死活就是不会。Day2读错题,暴力分都拿不到,T3爆零。我校很多抱着“拿个国一就跑路”这种态度来考的人都获得了吊锤我的分数,snz以一个遥遥领先的分数提前确立了人生赢家的地位(值得一提的是,神仙snz考完NOIP之后,体验了祂高中阶段的全部文化课生活,长度为:一周)。唯一让我感到心理平衡一些的是lzq也崩了(虽然比我好很多)。头一次思考“自己参加OI真的有前途吗?”这个问题,发现之前对自我的评价还是有极其严重的偏差的。但是再后悔也不能改变什么了,只好回到文化课的学习。但是我还不死心,每天都去小机房看望snz神仙,还因此被ob D过几次;也经常咕掉大课间去机房写题。同时由于文化课的不可抗力,我的睡眠时间从像snz一样健康的十点多开始逐渐推晚。于是我具备了打CF的客观条件,人生第一场CF,我上了228分,现在还记忆犹新。
12月24日那天晚上放学时我还很自闭,看见已经停课的qyl等人,感到无穷的羡慕和嫉妒。但是偏偏命运还在跟我开玩笑,不让我死心,给了我一个意料之外的THUWC的奖励名额。于是我就侥幸逃脱了期末考试,开始和snz等人一起参加训练。这是我关于小机房最初的记忆。这一段时间的训练中,印象最深刻的是某套题的题面。当时就想,以后等我也拥有了出题的能力,也要这样写题面。可惜机会已经不存在了。当时我们学校还短暂地拥有了自己的UOJ,是xyx搭的,大家取了一些奇奇怪怪的用户名,比如Iiji
,还有更加千奇百怪的昵称。可能是因为停课较多的原因,也可能是因为祂本来就无敌强,这段时间snz一枝独秀,Rating和上一届的大佬们一样飞速增长;而我们这届的其他人就不断掉分,Rating形成的鲜明的两极分化。
在THUWC之前,我还经历了一段独特的训练:雅礼集训。这次训练只有我和上一届的hlh、lmq参加,其中hlh去年已经去过一次了。在雅礼的十几天我自我感觉OI水平进步神速,学会了不少东西,一直到我高二的冲省队训练时还在发挥作用(指原题怪)。同时在雅礼我参加了一场CF的Div2,这场有一个“维护区间线性基”的套路题,我在线“学习”了一发题解,从而拿到了“切A、B、C、F,没过DE”的奇怪结果,上了很多分。(结果后来在NOI2020之前的训练中,做到了这个原题强行上树的版本)
THUWC2019。这是头一次采取Day2+的赛制,由于是头一次,举办经验还不太足,令人可以蒙混过关。毕竟我那时已经成为了一个Ubuntu的熟练用户,会利用系统自带的convert
命令把PNG文件转成PPM文件,从而轻松用C++读入图片,获得碾压级别的优势。所以就算在我其他题啥都不会、做得一塌糊涂的情况下,还是混了个二等奖。可惜这样天上掉馅饼的好事以后我就再也没遇到过了。
这时候OI逐渐变得前途未卜。本来的“x等约”变成了“x等奖”,“最优惠政策”也不能保证是“降一本线录取”。但当时群众情绪都还比较稳定。然而接下来发生的一件事让整个OI界炸开了锅:教育部公示的全国性竞赛活动名单中无信息学竞赛!大家都害怕OI要凉,还好暂时没有凉:NOI后来被补充到了名单之中;CTSC去掉了后缀C就不是“竞赛”了;NOIP则换皮成了CSP J/S继续存在。
从这段时间开始我入坑知乎了,然后就再也戒不掉了。当时看了竞赛退役是种怎样的体验?这个问题,很多回答让我感慨良多。直到现在亲身经历了,才发现曾经的“感慨”都是狗屁的为赋新词强说愁。
高一下
从一开学就进入了紧张的冲省队训练。和上学期的最后一样,snz和高二的神仙们的水平相当,与我等蒟蒻差距很大。
在一轮省选中,Day1 snz FST了,我从而获得了为数不多的一次锤祂的机会。我写了后缀数组,却不会一个log的后缀数组(直到我NOI 2020之前几天才学会怎么不用std::sort
建后缀数组……),所以被卡了。Day2我照例写不对背包,更别提贪心了,获得了垫底的成绩。又加上之前考得一塌糊涂的NOIP,进省队是彻底无望了。
二轮省选,我不仅不会T2的容斥(到现在还没有全懂……),T1连2SAT都写不出来。snz吊锤xyx,成为标准分和B队队长。lzq也获得了二十几名的好成绩。就这样,我高一的OI主线剧情彻底惨淡收场了,排名连只参加了一半的比赛的保送爷dwh都不如,甚至还不如初三时的排名。所有人都吊打我。
二轮省选结束之后没过多久,就开始了CTS+APIO+THUSC。CTS中神仙snz和神仙lzq双双夺金,可我实在是太菜了,连参赛资格都没有。APIO更是难受,签到题T2都不会做,只切了简单KD Tree题T3。我切的题和snz互为补集,但是snz获得了国际金牌,我喜提一枚铜牌。让我感到心理稍微平衡一点的是,lzq甚至还不如我。看来我也就会只会点愚蠢的数据结构了。
APIO和THUSC之间只隔着几天,由于家长们算到火车往返的价钱比一直住酒店的价钱还要贵,就和hlh一起提前去了西郊宾馆住下。hlh很强大,就会切省选的Day2T3“希望”这个大难题,然而我这几天却一直在颓废。这次THUSC的T1居然重复了THUWC的T1的结论,我THUWC时就不会做,结果现在还是不会做。而且还愚蠢地尝试用SPFA建最短路图。THUSC的Day2我就差一口气,在还有半分钟结束的时候发现了T2的标算,可惜还是没能拯救自己。晚上的Day2+更是失去了蒙混过关的能力,被吊打了,所以连面试都没进。然而神仙lzq就签到了二等约。
此时我们还不甘心回去文化课,碰巧南外还办了个省队训练,可以再逃避几天。于是经过短暂的两天文 化 课生活之后,去南外爽去了。第一天snz破天荒地爆零了让人印象深刻。不过后面几天snz恢复正常,轻松吊锤我们所有人。快乐的时光总是短暂的,没有进入省队的我必须参加期末考试。这段时间我忽然对WFC产生了兴趣,写了一个简易的实现(其实我觉得我的实现是错的,没有正确地理解这个算法)。还变得异常的学起来,之前停课的时候都不在洛谷上写题的,这段时间就忽然开始写题了。
期末考试的复习其实压力不大,后期甚至压根就不知道还有啥可以做的了,最后我自认为考得还不错。考完之后我回到OI,开始学习SAM,这是我OI生涯中学习的最后一个重要内容了。这段时间大家都在学校,我围观wyx等人以撒,逐渐着迷起来,也想自己玩了。
五机房被翻新了,换上了新电脑,系统也从10.10+WinXP升级到了18.04+Win7。暑假里参加NOI2019同步赛,可能是我OI生涯中打得最好的一场比赛了。毕竟自己参加的是同步赛,没有什么心理压力,比赛环境也是自己熟悉的(配置好了的18.04),并且题目都很适合我(比如kdtree、插值之类的,虽然有贪心题但是毕竟大家都不太会)。如果D1T1数组不开小的话,就能有金牌了(为什么我当时就不会-fsanitize=undefined
啊!)。后来高二的我已经几乎不会犯低级错误了,可惜这样好的比赛就再也遇不到了。最关键的是,我Day1.5时从百度上找到了个盗版以撒,并且wine还跑得起来,从此一发不可收拾。另一方面,参加现场赛的snz轻松进入国家集训队(“感觉还行” / “爽翻了”),lzq获得D类银牌。
暑假之后的训练中,qyl发挥得一直很好,甚至ob觉得他要进集训队了。我就一直不太行,可惜苦于硬盘坏了,找不到证据。只记得xyx出的题题面是《理想三旬》、《一如年少》和《蓝色元年》,然而那时我听过这些歌,却不知道陈鸿宇这个名字……
高二上
NOIP摇身一变成了CSP-S,但是训练还是一起照常的,只不过参加的人没有去年多了。这次变成了多校联合训练,在dev.xjoi.net上做题,所以保送爷snz也参加。我们下一届的新高一貌似特别猛,平时训练的水平略超过高二除snz之外的所有人。我稍微变学了点,又开始在洛谷上做点题了。但是以撒已经戒不掉了,每天下午都一直以撒一直爽,经常被snz等人围观,还被ob查封过一次。大概9月份快结束的时候我发现羔羊的愤怒已经不能满足我的欲望了,就又找了个盗版的AB+。但是当时我wine技术还不太行,折腾了半天都死活不会在Ubuntu上运行这个AB+,只好在机房的电脑上开Win7玩。结果机房里以撒疯狂传播,感染了很多高一选手。意识到每个OIer都是一个Lost,只有一个神圣斗篷,而我已经受伤一次斗篷已经没了,再受伤就完蛋了。(这个类比是本博客选择神圣斗篷作为Header Image的原因)
CSP-S 2019中我也侥幸获得了不错的成绩。Day2T2通过打表瞎猜的结论是对的;虽然Day1T3像去年Day1T3一样是个我完全不会的贪心题,但是这次别人也不会啊!虽然我连Day2T1都不会做,但是它暴力分给的多啊!凭借这个成绩,在省选中还是可以取得一些优势的。但是snz考得当然还是远强于我,lzq和qyl其实也和我差距不大。令人难以理解的是高一的强者们居然考得都不怎么样,可能他们仅仅是缺少一些参加正式比赛的经验吧?
这次比赛的Day1和Day2之间,我开始架设自己的博客。当时觉得架个博客真是件很难的事,我啥都不会,HTML JS CSS啥都不会写,只会各种复制粘贴。从那时起,我维护博客直到现在。不知道以后还会不会再维护下去?
CSP-S结束之后我回班搞文化课了。但是这次回班的心境毕竟已经和高一时大不相同了,觉得一切都充满了希望,实在是无法适应枯燥乏味的文化课生活。中途还有幸和我校的保送爷们一起参加了学军集训,这次是真的技不如人,排名变成了人形自走人数统计器。讲课也都没什么能听得懂的。(后来在省选之前的某天,由于snz号称明天训练会出学军集训的原题,我就去Fuyuki的博客把所有题解都看了一遍,发现其实“题目并不难”,绝大多数题都很好懂。唯一可惜的是第二天并没有出原题。再后来,毫无征兆地真的出了学军集训的原题,幸亏看过Fuyuki的题解,秒了)
接下来是THUWC2019的2.0版。这场比赛我打的垃圾程度和NOI 2020有的一拼,比NOIP 2018有过之而无不及。成为全场唯一完全不会Day1 T1的弱智选手。头一次遇到“明明是一个Linux系统,别人却比我适应多了”这种情况,导致Day2+彻底失去优势。连jyg都签到了一等约,高一的同学也都签到一等,我和lzq却还是毫无收获。但对于lzq来说没关系,祂后来进了集训队;我可惨了!
OI前景变得更加黯淡下来。这次THUWC连什么奖能有啥用都没讲,并且听ob说自主招生肯定是要取消了。后来出了强基计划,发现OI和生物、化学竞赛一样毫无优势了。这样一来,没进集训队就真的没办法活下去了。破格入围顶个屁用。
这一段时间我的CF Rating突飞猛进,已经达到了2392,眼看就要上红了,还是很高兴的。在Codeforces Round #612 (Div. 1)这场比赛中,我切掉了D题(一个愚蠢的线段树大力维护题,是我OI生涯中切过的唯一一个Div1 D),本来看期望得分可以涨150分呢,心情无比激动。结果结束前有一个sb给我把全部代码重交了一遍,还给我交了个其他不知道什么人的代码,导致罚时猛增,掉分了。从此之后我就再也没有上红名的机会了。虽然说我现在还不知道这个SB是谁,但我今天把话就放在这里了。
\[\Huge{\rm{机惨者死全家!不得好死!}}\]但是我当时不知道这个情况,CF只是告诉我“有个叫Fuyuki的用户抄了我的代码,所以他被Skip掉了”,我怒火中烧,向站长反映情况,可惜站长没法帮我。于是我上洛谷谴责这位用户,却发现事实可能不是我想象的这样,据我观察,这个Fuyuki应该是没有什么恶意的,我们唯一的共同点就是在学军训练时在电脑上输入了CF的密码,并且记住密码了。多半是有一个学军的恶意的第三方试图同时机惨我们两个人,却只成功了一半。不打不相识,后来发现这个Fuyuki是个很棒的选手,他后来CF顺利成为了红名,也顺利当了hb队长,最终顺利进了集训队(Rank 26),还在NOI闭幕式上接受了采访。然而我后来就CF一路下分,NOI也滚粗了。
最后是期末考试。由于自身的原因,我没有完整地参加此次考试。而且就算完整参加了成绩也不会太好看,因为我其实啥都没学。
进入了寒假。这一段时间,我入坑了B站,发现B站上有好多水平超强的以撒Up主,我养成了每晚看陈哥1直播的习惯,大大增强了以撒水平。还有笨蛋杯也是真的好看。本来期望在二月初举办的冬令营,因为突如其来的疫情,被推迟了。当时本来觉得这个疫情就是个突发事件,不久就会被彻底控制住,没想到事情会发展到现在这个样子。整个上半年被彻底打乱了。寒假一直持续到了4月7日,中间的网课,我全部咕咕。搭博客的水平不断提升,用JavaScript写了一个2048小游戏。
其实OI也没怎么学,大部分时间在YouTube和知乎、B站等地闲逛,或者自己玩以撒。每两天有一场训练,参加的人越来越少,到最后只有我、csl、pcf、srf和外校的侯天赐。我的成绩大多数时候不如高一的神仙们。发现了OI wiki这个好网站,在上面学了一些东西。创建了AtCoder账号,打了几场比赛,发现ABC是真的愚蠢,每场都是随便打打就20分钟AK了。但是AGC是真的自闭,有时是完全不会做只能爆零,有时是只会花一个小时40分钟切掉A题。但是看题解之后觉得也没那么难啊?看来我是真的不会做思维题。后来CF貌似也变了,全是思维题,以前Div1 C总归可以切,现在大多数时候就不会了,仅有的两场上分机会还TMD碰巧都被Unrated了,导致我CF一直在掉分。
高二下
4月7日开学,由于疫情的影响,没办法进行OI训练,只好上文化课。上了十几天我就受不了了,回家里躺着去了,继续寒假的生活。直到五月末期中考试结束,开始冲省队训练之前,都在自己学习。ob发了个自学指南,是我校的集训队员编写的,上面有好多我不会的东西,比如类欧几里得。这段时间我学习了BM,可惜只有当时学会了,后面很快就忘光了,而且从来没用到过(每次都可以高斯消元暴力求……),除此之外,可以说啥都没干。
偶然地接触了yhx的博客,看了上面的不少题解,发现大多数题解都看不懂,但是都显得很妙,不像是人能想到的。还从他的博客上学到了欧拉变换和分圆多项式(虽然都从来没有用到过)。最有意思的是,他有一个C++阅读程序小测试,我做完了才意识到自己对C++语法是多么的无知,只作对了$\dfrac{2}{3}$的题。当时我只知道yhx是一个高一进了集训队的snz式人物;后来才发现祂甚至比snz还要高一个档次,在NOI 2020中,yhx捧杯了。
还有Itst的博客,不知道为什么这人从4月末起就不更了(yhx则是从6月末起就不更了),这是ys在我高二上学期时推荐给我的,但是当时一直没有认真看。这段时间我认真看了他的博客,发现比yhx的还是好懂一些的。可是当时一直没能理解算力训练这个题,一直到冲省队训练开始之后还在试图理解,看了三四次终于看懂了。此人也很nb,在NOI 2020中获得了Rank 9。
还有ouuan的博客。原谅我把这事居然给忘光了,直到退役后很久才想起来。这是一个像Menci一样的那种有名的OIer,我曾经试图通过韵母猜名字,还以为这人叫做“尤书安”$\dots$我看博客时觉得这是一个有血有肉的普通OIer,和我也差不多,而且他还是不可多得的纯Linux用户,我从他的博客里学到了不少奇怪的知识。他也是GitHub的活跃使用者,是我为数不多的Follow的人之一。准确地说,我下决定使用GitHub Pages搭建自己的博客,就是受到了他的启发。所以如果没有他,这个博客就不会存在。不过因为他在CSP之后退了GitHub,我从高二下开始就渐渐没再关注过这个人。ouuan的NOI比我高一些,不过也只是Ag退役。
5月25日,终于开始了冲省队训练。一开始还是要拿盒饭到机房里吃的,我觉得盒饭不错,不知道为什么别人好像都不太喜欢。逐渐发现高一的pcf和czy还是具有比较稳定的优势的,srf则是什么都会但是FST偏多,csl是计数和思维题大师。他们经常吊锤高二全体(请自动排除snz)。但是考虑到上次CSP-S之前也是这样,所以当时我并不认为高一的神仙们省选也能考得这么好。可惜后来被打脸了。
一个月之后省选到来了,这次省选画风很奇怪,基本都是些简单题,但是没有C++11。Day2T1是个简单状压DP,我却想不到拆贡献所以不会做,爬山还爬不到分(虽然在各种民间数据都爬到了不少分),只有30。Day1T3是个不可做的论文题,大家都不会。其他题都是我擅长的类型,加上我CSP-S的优势,轻松进省队了。但是除了我和snz之外高二的其他人居然都不会Day1T2这个简单数学题,出乎意料。导致的直接结果就是,高一的神仙们纷纷翻盘在CSP劣势的情况下进入省队,高二的却都翻车了。lzq保住了C类。
觉得自己进入省队之后就变颓了,虽然训练都照常,在洛谷上做题的频率甚至还增加了很多,但还是在主观上觉得自己变颓了(总归要给自己翻车找个理由嘛)。这一阶段的训练也是多校联合的,据ob说考到前15名就相当于进集训队的成绩,然而我校只有两个人(请自动排除snz和xyx)总是排到前15:srf和pcf。每周还有两次杂题选讲,觉得每次听讲题我都啥都听不懂。除此之外的时间,除了我之外的人都在刷集训队作业,而我在照着srf的杂题选做做题,所以做的题其实也和别人差不多。
WC2020一直延迟,延迟到了八月份。觉得讲课没啥意思,就(基本上)全都咕咕了,但是集训队们营员交流还是挺有意思的。最后的考试,我!C!E!了!所以连铜牌都没有捞到(本来有个Ag的),很可惜。T2是个可做题,但是我全程在写T1的$O(n\sqrt{n\log{n}})$做法,没时间思考T2了。我校没人拿到金牌,发挥最好的是csl,唯一的银牌高分。
APIO2020变成了线上赛,我校没有人是正式选手,所以不可能像去年的snz和前年的xyx一样有人能拿到国际金牌了。snz花了4个小时就AK了,但是我就只会做T1,被lzq和csl吊锤了。这个T2我在错误的道路上走了太远,为一个树的subtask写了几百行的程序,还调不对,自闭了。最后也只拿到了一个Ag。明明前两年都是数据结构大赛的,这次居然变成了CF的画风,三道题都是很妙妙的思维题。
暑假里也参加了几场CF和AtCoder,由于实在是太菜了,CF甚至都掉紫了。好久没有体验过Educational Round了,随便一打就拿了个(正式选手中)Rank 3,可是又TMD Unrated!!!每次我一要涨分怎么就给我Unrated啊!!!下一场Div2我的表现就差很多了,很明显我只会做不用动脑子的题。居然还遇到了ABCD题完全不用动脑子的AGC,和之前A题都做不出来的AGC形成了鲜明的对比。csl在这段时间获得了CF红名,因为他总能做出来一堆我和srf完全不会的题,觉得他的思维能力是真的强。
这段时间还接触了Rust语言,发现虽然这个语言写起来很恶心人,但是速度还是挺快的,而且的确不容易出错。感觉的确是一个有取代C/C++潜力的语言。为什么OI系列的比赛就不支持这个语言啊?只有洛谷支持,在洛谷上我用Rust写了不少的板子。
NOI之前,最后是UNR。笔试时我就会碰外设还不带密码条,98了;Day1我凭借高一时特地锻炼过的分治FFT卡常能力获得了不错的成绩,虽然T2我想了很久;Day2就挂光了,发现自己以前的强项KD Tree,现在已经完全写不对了,剪枝都忘了!这要是NOI2019我就进队失败了啊。退火也退不到分。还好本校的其他人(除了xyx)Day2的成绩也不咋样,稍感安慰。觉得这场比赛我的发挥和lzq在NOI的发挥是类似的。
收官之战NOI 2020,回忆起来,我自己都完全无法理解自己能考出这么差的成绩。要不是CCF大发慈悲增加50个银牌,我连强基破格入围的资格都莫得。两场得分居然都是$2>3>1$这样离谱的不等式(有趣的是,回顾一下我曾经的比赛,其实我CSP Day2、 2020省选Day2、2019省选Round1Day2、还有无数次THU冬/夏令营都是这个情况)。Day1T1没有切掉,Day2T1没有拿到45分是真的不应该,但是就算完美发挥了这次我也没法进入集训队。神仙lzq D1T2乱搞暴打我的两个log,D1T3暴力硬艹性质B,D2T1乱搞搞到70分,最后也只比队线高了19分。换了我是肯定不会去写乱搞的,所以我没啥希望。神仙snz则“很难受”地再次进队了。新高二则表现得都不太好,srf Day2晚节不保,pcf和csl则和我一样从Day1T1开始满盘皆输。ob本来认为我们五个人里面至少可以进两个集训队的,却只进了个lzq。到现在为止,清华那边还是没有消息,连强基直接满分都多半无法达成了。
这六七年的OI之路,付出的心血与得到的回报实在是可笑的不成正比。回顾身边的选手们,有的进入集训队成为人生赢家;有的早早选择了明智退出,文化课搞得风生水起。就我不仅OI毫无收获,整个竞赛历程压根没拿过Au,文化课到高三快开学前还是一张白纸。也许就像xyx说的,OI就是一场赌博,我就是赌到最后一无所有的赌狗。在曾经还有降一本线录取的时候,搞OI看起来是那么的安全,现在却是一失足就会掉进万丈深渊,摔得粉身碎骨。现在回想起来,如果两年前OI就是这么个政策的话,我考完NOIP2018就肯定选择直接滚蛋了,因为高一没保送的话高二我肯定是不敢再去学了。
但还是得活下去啊,虽然成为wyj和lmq那样的人多半是办不到了,但是至少要让自己不要变成一个hlh啊。自己选择的路,跪着也要把它走完。为啥我的脑海中蹦出来了这句话?很久之后,我终于想起来了它的出处
UPD: 说好的高考完更新
高三上学期和snz一起吃饭时曾经说过,等到高考结束了,还会再做一次更新,画上一个(不知是否会圆满的)句号。然而我一高考完就沉迷颓废不可自拔,就咕咕咕了。现在补上。
人物回忆&感谢
首先是徐翊轩、杜伟桦、王宇骥、李骥、卞浏予、陆明琪、何乐晗等几位强大的学长,感谢你们精心准备的训练题目与讲课。和hlh、lmq一起去雅礼集训的时光也是我最珍藏的回忆之一。更重要的是,在OI这个前人带领后人的独特环境,没有你们创造的氛围,我们scz也不会有今天这样辉煌的竞赛成就。
然后是强大的姚班大佬孙诺舟。作为同龄人中的佼佼者,孙诺舟和我们这一届的其余scz OIer有着亦师亦友的关系,就不重复一遍前面那段话了。世界上的事也不只有OI,除此之外,snz是为数不多能让我产生心灵共鸣的同学,高三时要是没有你的陪伴和包容,我真的不知道该如何度过那段最黑暗、最绝望的日子。
还有汤乐天和王皓睿。之前我可能不太能理解,但现在我清楚了,在OI上一条路走到黑,未必是一个明智的选择;感谢你们让我见识到了另一条道路。有幸能够在这里结识你们,体验到为这片土地所不容的真正自由的思想碰撞之乐趣(虽然我还是那么讨厌物理)。希望你们在国外能找到你们一直在追寻的那些东西,更希望将来有一天出国不再是自由的必要条件。
接下来是集训队选手、智班大佬李泽清。从初三开始我就将此人视为竞争对手,但其实我一般都打不过他。他虽然MBTI和我仅有一个字母不同,但在OI思维和为人处世等各种方面与我有着很大的差异,所以我不太能理解他的各种决策和行为。但无论如何都不能否认这是一位拥有相当强大的实力、值得大家尊敬的OIer。
下一届的大佬陈树伦。和我一样是对数学超级感兴趣的OIer,但与我的叶公好龙不同,他是真正参加MO且具有高超MO水平的。同时此人全面发展,不仅OI上各方面都很强,而且文化课水平极高。与他讨论数学问题是件很有意思的事,虽然经常是我跟不上思路并被暴打。高二时看他玩Euclidea给我留下了快乐的回忆(以撒更快乐)。他的水平绝对远远超出集训队的要求,可惜最后还是没能进入OI集训队。但他进了MO的集训队,照样获得了保送姚班。
下一届的集训队大佬孙若凡。超级强大的OIer,实力吊打我们这届除了snz之外的人,并且在全国OI圈子里是社交达人。也算是除了snz之外和我关系最近的OIer吧。貌似挺喜欢打游戏的(虽然论做题他也绝对比大多数OIer卷)?高三时看他玩了很久空洞骑士(反正已经保送了,ob应该既往不咎),也算是被他带着入了坑(虽然之前也有wzc、xyx和一块蓝冰的熏陶)。
下一届的大佬濮成风。他对人工智能和计算机图形学比较感兴趣(提前卷大学内容),这方面也是和(从前的)我比较接近,但他不可饶恕地用Windows。此人OI上也有强大的实力,发挥非常稳健,甚至(和我一届的)大家都看好他超过srf,可惜最后和我一样也只捞到了Ag。高三时看他的线性代数书学到了不少东西。
还有和我同届的zc、jyg、qyl、ys、zcy、wyx、yjq以及下一届的czy、wzc、qty等,感谢你们的陪伴和吊打。
感谢不懈撰写博客,供后人乘凉的Matrix67、yhx-12243、Itst、ouuan以及这个知乎回答中提到的各位。
可惜现在的我不能感谢曾经的自己。励志鸡汤都是骗人的。
对OI的看法
首先就是大家都会问的,“你后悔学OI吗”。说实话,我真的很后悔,你看我都已经玩了200小时的忏悔了。并且我认为,说“不后悔”的很多人,要么就是保送了站着说话不腰疼,要么就是被OI糟蹋了前途还非要打肿脸充胖子。竞赛这条路,远比高考要残酷,能笑到最后的少之又少,其他$99\%$以上的人都是哭着被抬出去的。如果你不是真的具有逆天的实力或者天赋,还是不要抱有侥幸心理,因为至少OI这件事,真的不是你拼尽全力就能修成正果的。虽然我本人离“拼尽全力”还差得很远,但身边付出了全部还没能保送的人真的并不鲜见,更不是所有人竞赛失利后都能救得回来(比如我就不能)。
嗅觉放敏锐点吧,现在国家和社会舆论对竞赛是什么态度,请不要装作看不见。如果你的沉没成本还没到不可挽回的程度,千万不要听信“一息尚在 安敢回头”之类的话,我也送你八个字,“OI无涯 回头是岸”。你对未来的想象、学长学姐的经历、Top2放出的各种约和优惠,千万不能信任这种空头支票,未来貌似处处都是机会,实则你会发现处处都是碰壁。OI的天气变得比小孩子的脸还快,曾经是国一保送,后来是自招,又闹出从竞赛中被除名的风波,现在又变成强基,一路滑坡,你咋知道等你上大学时的政策会倒车成什么样呢?高考虽然也一直在变,倒车也不少,但它起码提前三年让你有所准备。
然后,很多人会辩护说,虽然你不能通过竞赛升学,但“OI的思维能力会让你一生受用”。首先,说这种话的人还绝对没有过完他的一生,这自然是无稽之谈;其次,只有成功者才会跟你这么说,这可能就是一种幸存者偏差,完全可能是“让成功者成功的能力”而非“OI失利者的OI思维能力”让他们真的一生受用。至少从我本身而言,我不觉得OI的这套思维方法套用到别的学科中,能产生什么帮助,毕竟隔行如隔山。再说,打游戏的策略难道就对人生没有用么,这能当成打游戏的理由吗?当然我这么说也只是因为我阅历太浅,欢迎反驳。我这里不是搞“OI无用论”,事实上OI中学到的知识肯定会让你在大学的相关学习中轻松很多(如果你是大学还能学CS的幸运儿),但这仅限于国一以下级别的知识。省选知识,我能想出来的最有用的,可能也就是平衡树了,别的东西是真的屠龙技,除非你想当理论计算机科学家,不然实在想象不出什么应用场景。
所以就有很多人拿到国一之后就选择了退出,虽然其中部分人学得远比我好。高一时的我对这种行为感到强烈反感:我NOIP比你们低得多,都坚持下来了,也能签个没用的约,你们这个水平好歹能签一个无条件一本约吧,那不是躺进清北,学习最热门的CS,走向人生巅峰?当然,后来结果是什么,大家也都知道了:坚持下来走到最后的我,发现签的约都是废纸,好不容易进个T大还要被调剂;而那些急流勇退的人呢,有的高中认真学习了三年的文化课,最后进了P大还学上了计算机;有的直接出国,去了剑桥。现在的我才恍然大悟,明白了他们决策的明智,然而一切都已经晚了。但如果你们还没有深陷泥潭,对学习OI这件事还是要三思的,毕竟不能拿你的整个人生和前程来孤注一掷。从个人来讲,我还是很希望OI能够普及,越办越好的,能够摆脱在五大竞赛中常常被歧视的地位,但《三体》说得好:“在中国,任何超脱飞扬的思想都会砰然坠地的,现实的引力太沉重了。”
如果你看到了这里,还没有动摇对OI的决心和热爱,那么恭喜,你通过了考验!我充分理解并支持你做出的抉择,希望我的博客能在你的追梦之路上提供一定的援助,也希望你的努力终能得到回报。
All tragedy erased. I see only wonders…
– Quirrel