OI生涯回忆

Some dying memory...

Posted by wyj on August 20, 2020 / Edited on September 27, 2021

这篇文章是蒟蒻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就签到了二等约。

此时我们还不甘心回去文化课,碰巧南外还办了个省队训练,可以再逃避几天。于是经过短暂的两天文 化 课tui zhi hu生活之后,去南外爽去了。第一天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一起吃饭时曾经说过,等到高考结束了,还会再做一次更新,画上一个(不知是否会圆满的)句号。然而我一高考完就沉迷颓废不可自拔,就咕咕咕了。现在补上。

参考xyx的回忆lzq的杂谈snz的回忆等等文献。

人物回忆&感谢

首先是徐翊轩杜伟桦王宇骥李骥卞浏予陆明琪何乐晗等几位强大的学长,感谢你们精心准备的训练题目与讲课。和hlh、lmq一起去雅礼集训的时光也是我最珍藏的回忆之一。更重要的是,在OI这个前人带领后人的独特环境,没有你们创造的氛围,我们scz也不会有今天这样辉煌的竞赛成就。

然后是强大的姚班大佬孙诺舟。作为同龄人中的佼佼者,孙诺舟和我们这一届的其余scz OIer有着亦师亦友的关系,就不重复一遍前面那段话了。世界上的事也不只有OI,除此之外,snz是为数不多能让我产生心灵共鸣的同学,高三时要是没有你的陪伴和包容,我真的不知道该如何度过那段最黑暗、最绝望的日子。

还有汤乐天王皓睿。之前我可能不太能理解,但现在我清楚了,在OI上一条路走到黑,未必是一个明智的选择;感谢你们让我见识到了另一条道路。有幸能够在这里结识你们,体验到为这片土地所不容的真正自由的思想碰撞之乐趣(虽然我还是那么讨厌物理)。希望你们在国外能找到你们一直在追寻的那些东西,更希望将来有一天出国不再是自由的必要条件。

接下来是集训队选手、智班大佬李泽清。从初三开始我就将此人视为竞争对手,但其实我一般都打不过他。他虽然MBTI和我仅有一个字母不同,但在OI思维和为人处世等各种方面与我有着很大的差异,所以我不太能理解他的各种决策和行为。但无论如何都不能否认这是一位拥有相当强大的实力、值得大家尊敬的OIer。

下一届的大佬陈树伦。和我一样是对数学超级感兴趣的OIer,但与我的叶公好龙不同,他是真正参加MO且具有高超MO水平的。同时此人全面发展,不仅OI上各方面都很强,而且文化课水平极高。与他讨论数学问题是件很有意思的事,虽然经常是我跟不上思路并被暴打。高二时看他玩Euclidea给我留下了快乐的回忆(以撒更快乐)。他的水平绝对远远超出集训队的要求,可惜最后还是没能进入集训队。希望他MO或高考能够顺利(为啥不用&&呢?因为这里的||是短路求值)!

下一届的集训队大佬孙若凡。超级强大的OIer,实力吊打我们这届除了snz之外的人,并且在全国OI圈子里是社交达人。也算是除了snz之外和我关系最近的OIer吧。貌似挺喜欢打游戏的(虽然论做题他也绝对比大多数OIer卷)?高三时看他玩了很久空洞骑士(反正已经保送了,ob应该既往不咎),也算是被他带着入了坑(虽然之前也有wzc、xyx和一块蓝冰的熏陶)。

下一届的大佬濮成风。他对人工智能和计算机图形学比较感兴趣(提前卷大学内容),这方面也是和(从前的)我比较接近,但他不可饶恕地用Windows。此人OI上也有强大的实力,发挥非常稳健,甚至(和我一届的)大家都看好他超过srf,可惜最后和我一样也只捞到了Ag。高三时看他的线性代数书学到了不少东西。

还有和我同届的zc、jyg、qyl、ys、zcy、wyx、yjq以及下一届的czy、wzc、qty等,感谢你们的陪伴和吊打。

感谢不懈撰写博客,供后人乘凉的Matrix67yhx-12243Itstouuan以及这个知乎回答中提到的各位。

可惜现在的我不能感谢曾经的自己。励志鸡汤都是骗人的。

对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