OI 故事

OIer 的回忆对于他人来说,有两方面的价值:消遣和启发。本文以前者为主。

五年级的时候买来一本《C 语言程序设计》,不久便放下了。六年级重新萌发了学习编程的想法,从百度 C 语言吧获取了《C Primer Plus》一书的 PDF,利用闲暇时间慢慢地读起来。在初一的一天,把这本书看了一遍。

那时每个星期只有合计一小时的电脑使用时间,并且仅限周六、周日。当然假期宽松一点。所以,我只是学习了语法,而没有实际写过几行代码。

看完这本书之后,不知道该干什么了。想学算法,看《算法导论》,归并排序的递归让我难以理解。想再学一门语言,比如 C++、Python,却都是浅尝辄止,大概没有当初的时间和耐心。

宜昌市科技节有个项目叫“信息奥赛”。同学告诉我,初赛报名之后,可以去一中的陈老师那里学习。现在我才知道,陈老师欢迎任何感兴趣的小学、初中生去学习。我想参加,想象着未来将会学到什么知识。初一错过报名时间。初二只交了 10 元钱,等我交上另外 10 元,报名已经结束,老师还不给退那之前的 10 块钱……初三,在同学的提醒下去报名。那天每节课课间都去颜老师的办公室。在下午一节思想品德课之前,门终于开了。可报名时间在中午截止。颜老师给一中的陈老师打了个电话。问我报什么语言。C++,如果初赛考语法细节,我是不会的。但是,听说初赛考好了还有复赛,STL 一定很方便。于是选择了 C++。

初赛的最后半个小时,那个考场只剩下两个人。另一个是现在的学弟。

一天,老师在广播里叫“904班班长”。原以为是班级事务,结果被告知初赛考了九十多分,普及组全市第一名,第二名是七十多分。开心地交了一笔报名费,参加复赛。去一中机房跟着其他初中生一起学习了一次。隐约记得陈老师在讲 C++ 语法。

那是我第一次去华科的机房,也是第一次看见满屋子会写代码的同龄人。

我只会模拟。事后还发现 T1 审错了题。就这样还拿了我省普及组第 4 名。我想,信息奥赛也不过如此嘛。

坐井观天啊!如果去看看那年的提高组:VFK 获得 600 分,同一年级的 Fuxey 拿到一等奖。

元旦的时候,一中的 LTY 学长找到了我,勉励我好好学习。那时班上在举办联欢会,我唱了首歌,好像效果不太好。我和 LTY 学长在教室后门对话。

寒假,LTY 学长送给我两本书和一封信——《莫失初衷,继往开来》。信中写道,提高组一等奖对我来说应该不困难,希望我走得更远。那时,我对此很有信心。

初三下学期,参加华师一专县生招生考试,意外地压线考取。这意味着中考对我并没有那么重要了,于是不再去学校。预习了一点高中知识,同时看一看《深入理解计算机系统》——两年后的冬令营,松爷会在讲课中推荐它。但是只看了前面的四章,并且现在基本不记得什么了。我有和信息奥赛关联更大的书,但那时它们对我的吸引力不算太大。

后来没有去华师一。一中招生老师说,争取快点拿到信息奥赛联赛一等奖,然后去搞数学,这样就有机会拿两个学科联赛的奖了……那时,我也觉得,信息奥赛含金量不是很大的样子。

离开初中起,LTY 学长就建议我去一中学习 OI。普及组复赛考完后,我只去了一两次。学了快速幂,证明了一下欧几里德算法的正确性(搬运自《什么是数学》)。记住了一位喜欢提问的学长,半年后我会知道他是 WZH 学长。如果陈老师那时在讲动态规划、图论这样的专题,或许当时会对 OI 更加重视吧。


进入高中,沉浸在新奇之中。由于预习较为充分,文化课一开始学得非常轻松。

参加 NOIP 2015。初赛,程序补全考了 Dijkstra,我不会。出考场后,听 LWC 学长讲解,觉得很奇妙。八十多分,在一中是最好的,全市就算不上什么了——兄弟学校实力强劲。学长们表示,要在复赛赛场上一决雌雄。

动车上,试图证明扩展欧几里德算法的正确性,但是只导出了递推算法。LWC 学长略加思索,三下五除二给出证明,我目瞪口呆。

信心满满地走进考场,垂头丧气地走出考场。去武汉的时候,骄阳似火;回宜昌的时候,寒风逼人。兄弟学校的 TYQ 同学告诉我,他们学校的大神说 D2 T1 是二分查找。二分查找不是用来从一列有序元素中找到给定关键字的吗?于是,我们一起去问兄弟学校的 TYM 神犇。他觉得这个问题非常奇怪,“二分……就是二分啊。”后来想起,那应该是传说中关爱傻子的眼神……

我校全军覆没。兄弟学校那年有 8 个一等奖。兄弟学校的教练叮嘱他们好好刷 NOI 题库。我们没有料到会出现原题。

WZH 学长表示,他会负起作为学长的责任,帮陈老师一起教好学弟学妹。

在那之后的很长一段时间,我一直和 WZH 学长一起学习算法。首先学了并查集,在 CodeVS 上做了《家族》,并得知这叫“模板题”。WZH 学长给我看《食物链》。从一本书的例题上受到启发,花了一个星期,终于做出来了。我很享受这个过程。那时,一个星期只能做一道题。搞 OI 的时间主要是中午。

毕业两年的 GSH 学长假期回到一中,WZH 学长想让 G 神教教我们树链剖分。但是,G 神开心地接了一个电话,就没理我们啦……

WZH 学长收了个小弟,叫 WNX。

寒假,HJN 神犇教我们 KMP 和 AC 自动机,还有网络流。主要是算法本身。那段时间还学习了线段树——这个将来让我有学上的数据结构……

WZH 学长的老乡、兄弟学校的 MYJ 学长在老家远程教学后缀数组。

省选和 APIO 临近,突击学习了 LCT、分块、可持久化线段树,做了一两道最大流,一两道费用流,还有一道 2-SAT。学长提议,把近几年的 APIO 试题找出来做一做,每个星期一套。我觉得难度一定很大,但还是欣然同意。

但是我们不知道去哪里找题目,不知道该用权限号浏览 BZOJ。

先看 APIO 2012。经过几个小时奋战,我获得 5 分,比学长高 5 分。后来学习了题解,用 Treap 写了《Dispatching》,并和学长约定,他的 Splay 跑得更快,我就请他吃一个卤鸡蛋。但是学长最后没有写 Splay,而是学了斜堆,我还是奉上卤鸡蛋一个。

第二次看 APIO 2015。学长生病了,痛苦地躺在机房里的折叠床上,叮嘱我研究题解。过了很久,才对《Jakarta Skyscrapers》明白了一点。没想到分块还可以这么用。

对那时候做的题印象深刻,因为做的很少。

和学长想去兄弟学校交流一番,被拒绝了。TYQ 同学告诉我,他们教练开心地说:“听说 chrt 要来,我就不让他们来了!”

学长没报上 APIO 的名,他很沮丧。

我报名当 APIO 的主持人,加入一个讨论组。学长非常激动,告诉我其中一个成员叫 YJQ,是个神犇。

陈老师带着 WZH 学长,WCX 大师,和我去华科省选。老师和学长计算了我多考多少分才能进省队。


省选的前一天晚上,我们和武汉的几位学长一起吃火锅。

Day 1 什么也不会做。本来不至于爆零,但是我看输入描述中,一条边是(fr,to),就以为这意味着直接给出有根树。所有数据输出 0,得分为 0。我哭了一场。

Day 2 什么也不会做。

两试总得分 0+20 = 20。兄弟学校的 DYX 学姐其实已经退 OI 了,比我低 20 分,但是以女生中 NOIP 成绩的绝对优势,进入湖北省队。

在回宜昌的动车上,我们看 GZQ 等神犇的代码,感到很震撼。那么强,却还是如此严谨。


APIO 和同为主持人的 HSW 同学成为了室友。并见到了另外几名同事。分给我的台词里出现一串神秘字母——WJMZBMR,我问这是什么,ZJH 学长说这是陈老师,我知道这肯定不是指我的教练陈凡老师,只好问陈老师是谁。“陈老师就是陈立杰啊。”

考试,花费绝大部分时间想 T1,最后 GG。独自漫步在北京城的街道上,看人来人往。那是我 16 岁生日的第二天,默默地品味这份礼物。然后决定坐地铁去 thu 看那天晚上的智能体大赛决赛,最后好困。天太晚,回来已经坐不成地铁了。跟着 HSW 和她的同学们走,最后回到昆泰酒店。

主持人原本有 6 个,但后来 LXT 大爷没有来。单出了一个人,于是我负责在舞台旁边点 PPT。HZT 大爷作为学生代表发言。LK 按照计划采访 YJQ,后者答道:“在座的各位,除了我都不是垃圾。”全场嘘声一片。原本准备的小游戏都被砍掉了,因为 DZD 坚持一个一个地颁奖,从铜牌到金牌。最后,收到一个惊喜。“到此结束”之前,DZD 阻止了我们,在台上为我们颁发了主持人工作的奖状,这是计划之外的。

和 DZD 主席握手,他问:“你是哪个学校的?”这个问题在将来还会听到两次。

UOJ 群群聚,WZH 学长很想让我代替他去。我当然是拒绝了……WZH 学长要我问问 YJQ 神犇怎么学习 OI,我也没有问……回去之后差点被学长宰掉……

但是 YJQ 神犇说了这样一句话,后来我一直记得:“要把暴力打满再想正解啊。”

……

当时,我好像表示希望自己一年后也能变得很厉害。


高一下学期接下来的一段时间是黯淡的。我意识到自己很差劲。文化课上也感到不那么轻松了。作业写不完。化学搞不懂。

突然,我得知,DYX 学姐决定放弃省队资格。所以,尽管我的水平远远不达标,却还是进入省队。一下子有了写作业的动力。

WZH 学长曾说我进了省队他就报 D 类,但是他没有。事实表明,这个决定有些遗憾。

那时做了《网络流 24 题》,以为自己网络流的水平达到了不错的程度。

暑假参加《NOI 导刊》的培训,那是第一次外出集训,近距离膜拜去年的队爷 visit_world 神犇和现在的队爷 lkmcfj 神犇。听课的主要收获是,得知自己几乎所有东西跟没学一样……模拟赛的主要收获是,写暴力变得熟练了一些……

我不会网络流。

然后去成都玩了一天,到南山中学参加 NOI。暴力没有拿满,最终压线 Cu。但我还是好高兴。社会活动日那天晚上,考完二试那天晚上,心情都是难得的宁静。二试的时候向监考人员询问 T3 的题意,于是和 VFK 神犇说上了一句话……但考试的时候没发现那是 VFK。签约的那天晚上,寝室空荡荡的,学姐们很晚才回来。

DZD 主席为我挂上奖牌,问:“你是哪个学校的?”其实您问过一遍啦……

看到了武汉二中的 Sengxian、Fuxey 两位神犇。觉得 Sengxian 长得很清秀,Fuxey 更和善。对 Fuxey 的印象是没有错的,但是后来我怀疑之前看错了 Sengxian 的长相,哈哈哈……

向 visit_world 神犇请教经验,他说,在 bzoj 上刷题,从弱省到强省,从 AC 人数少的到 AC 人数多的。

但那时觉得自己许多基础的东西都不会,NOIP 能否一等奖都值得怀疑,就去做本该在一年前的暑假完成的 USACO Training……没有做完,但确实学到一些东西,比如,终于对什么时间复杂度能跑什么数据范围有了一定概念……

盛夏八月,每天都去游泳。不过现在那家健身馆跑路了……

兄弟学校的教练吐槽我名字起得不好——弱铜……

暑假,班上在上新课。除了物理之外,我都没有补。开学之后造成了一点点问题。

对于一个作业写得慢,且全在课下完成,还想搞一搞 OI 的人来说,生活不那么美好。于是晚自习请了假,即便有一节晚自习是用来讲课的。回家之后花一些时间把作业写完,就可以开始学 OI 了。

生物在讲遗传。老师好像在某节晚自习上讲了不少典型的解题方法。有些吃力。mhb 同学觉得,遗传是高中生物中最简单的,希望我过一段时间也能这样认为。

进行了一次月考,神奇地进步了。可能和考察范围有一定关系,也可能是时间变得有限,使我更加珍惜它。

初赛完挂。今年又是在兄弟学校举行,环境如同去年一样吵闹。我是抱着拿 rank 1 的心态去考的,甚至觉得拿不到很丢脸,于是越发焦躁。考完之后哭了一场。七十多分。三次初赛,一次比一次差。

紧接着去重庆考计算概论大学先修课的考试,同样完挂。这次考之前就哭过了,因为焦虑。有原题,但是没做出来。同学有 A、A+,甚至全国第 4 名,我只有 B+。

兄弟学校的 yp,初赛全市 rank 1,99 分。丢掉那一分,是因为不知道 PPT 是微软的产品……我以为这是在说笑,半年后求证,竟然真是这样。

从 TYQ 同学那里还听来一些 yp 同学的情感故事,肃然起敬,同时心生好奇。

NOIP 临近,大家逐渐开始停课。先开始,晚上我仍然回家,后来就跟大家一起了。那段时间具体在做什么已经记不清了。做了一些模拟赛,结果貌似都是被 mhb 同学完虐……?题目是由陈老师提供的,分为两部分:好几年前的模拟赛(那时 NOIP 只考一场,四道题)、NOI 题库里的。后来,陈老师带大家晚上一起看题目,我还没理解题意,mhb 同学三言两语道出正解……Orz

WZH 学长也想停晚自习,过程较为曲折,家长还来了学校。

此时兄弟学校花大价钱把清北学堂的一名老师请到他们学校做指导。

学校的天文台每年开放一两次,一个晚上,我们集体去赏月。我能看见那一个个环形山,一片片柔和的阴影。皎洁,宁静。

LTY 学长说,这项活动是个传统。每年看完月亮,NOIP 也就快到了。

兄弟学校的 TYQ 同学告诉我,他们教练说,这次不会从题库抽原题。


NOIP Day 1 的前一天晚上,我辗转难眠。从那以后,正式 OI 考试前睡不好觉就成了家常便饭。

Day 1 出了考场,mhb 同学说,自己会做 T1 和 T3,只有 T2 是写的部分分算法。我做好了出成绩后被虐的心理准备……陈老师和 LY 学长带我去买了个枕头,下午一直在想 T2 的做法,试图补觉未果。根据 UOJ 群里的只言片语,总算有了些眉目。和 YXQ、WZH、WNX 一起在光谷吃晚饭。晚上妈妈也来武汉了,她说自己是来送枕头的,但枕头可能忘在了家里。

Day 2,T1 忘了取模结果等于 0 和倍数之间的等价,去分解质因数。T2 没有去想线性做法,也没有进行测试,因为我一直觉得 O(n lg n) 是非常优秀的……T3 的复杂度也多乘了个什么。但当时我还以为自己 AK 了,还在想 NOIP 提高组怎么如此简单……

最后我校有 5 个一等奖。其实不太成功,因为高二只有 2 个。mhb 同学把doublelong double的格式描述符弄混,少了 100 分,但是这对一等奖的获得不影响。

NOIP 结束后,晚自习回家的特权被收回。OI 时间大幅度压缩,但是每个星期还是有额外的四节课的时间。之前由于晚上有时间,中午就没去机房了。NOIP 结束后,不记得中午去了没有。

那段时间是沉闷的,圣诞节那天跟父母讲了停课的想法。其实我这样想很久了。父母表示同意,但要等到这个学期过完。这成为了我坚持文化课学习的动力。

学校突然提高了一点对奥赛的重视,其他学科联系了机构出门培训。陈老师问我和 mhb 去不去雅礼,我觉得这样可以尽快离开学校,离开学校就有很多时间搞 OI 了……就答应了,mhb 同学似乎也是这个想法。于是我俩没考期末。

遗憾的是,当时没能学到多少东西,因为教授的内容、模拟赛试题的难度,都超出我的能力不少。但是有如下收获: 1. 近距离瞻仰毛爷爷等神犇。 2. 某天晚上学习了 FFT。 3. 打了人生第一场 CF。 4. 开始更新本博客,因为宾馆的网络无法登录 CSDN。 5. 做了 HNOI 2016 Day2 T1,知道了线段树上可以打矩阵乘法标记。

一中进行了 OI 十周年庆祝活动,我上台作为高二代表发了几句言,现在觉得,还是稿子里这句话写得最好:“9月,我们从懵懂的高一学生变成懵懂的高二学生。”

接着,是冬令营。认识了武汉二中的 Chivas。武汉二中的三位坐在第三排,我和 mhb 也坐到了那里。还认识了山东的 ATP 和 hxy,还有萌萌的 ahcisy。那个吵吵嚷嚷的寝室,虽然没有独立卫生间,但在记忆中是美好的。

考试得到七十多分,获得人生第一个 Ag。比 Sengxian 高 2 分,据说这位老兄一直耿耿于怀……喂,我后来都还了上千分了啊……


和教练、班主任交流之后,开始停课。时间突然变多了。向 VFK 请教了一下,VFK 说,要珍惜时间。

一年前跟 WZH 学长一起学习了一些高级姿势,但是我不确定那究竟算不算“学过了”。因为,仅仅是学习它们的写法,然后(对着题解)做一两道除模板题以外的题。

发现 yp 同学也停课了,并且发现了他的 CF id。

很长一段时间,CF 都停留在蓝名,直到现在。后来觉得时间太晚,并且决定淡泊 Rating(反正也得不到……),就没怎么打实时的了。

省选。进了省队,拿到 HB-03。但是过了一两天就开心不起来了,因为 600 分的考试,我的得分不到一半,这怎么去考 NOI……mhb 同学因为调试输出没删,又丢掉 100 分。如果加上这 100 分和 NOIP 的 100 分,他应该是我省 rank 2。NOI 改 IOI 赛制,应该能较大程度减少这样怀才不遇的同学。

mywaythere 来宜昌玩了一趟,我和 yp 带她去了三峡大坝,去看了两所高中。

接着是 CTSC 和 APIO。yp 和我们一起去。陈老师问 yp 是否介意和 mhb 同学挤一张床……最后,陈老师才想起来,其实他可以订双人间。

路上,mhb 和 yp 两位同学建立了深厚的感情,交谈了不少丧失的话题。

CTSC 成绩惨淡,压线 Cu。APIO 更惨,考了 Cu 分数线。和我预想的,相差有点远。被妈妈教育了一顿。妈妈说,这就是你不出门学习的结果。她还说了一些话,我现在都感觉很不舒服。

LTY 学长说,“我看到了你们的奖,都是铜牌加铜牌。”不知如何作答。

引用 WK 游记里的一句话:“我确实因为各种原因,和我的目标渐行渐远了。”

那次北京之旅没有写游记,但其中还是有亮色的。

那次安排了不少大床房……不过睡得挺好,没有失眠。室友讲了不少唐山一中的故事。

和 yp 一起去打了 thu 校赛,太匆忙了,连三个人都没有凑齐……大致过程如下:

最后一题管自己叫《未命名的签到题》,我根本没打算看,但 yp 同学对出题人怀着信任——还真是签到题。Flaze 给我们了一个气球。然后,我猜结论,yp 写了一道题。yp 又用整体二分切了一道题,据说有人被卡常了,但是我的队友自带小常数……他跟我讲这道题的做法,我云里雾里,第二天才发现题意理解有误。其他题没什么进展,我开始写那道大模拟。YJQ 和一位女装大佬晃来晃去……从背后经过的时候,表示又发现一支有女选手的队伍,这位同学一直在很辛苦地写代码,祝她好运……终于写完了,然后 WA。此时 yp 想出了一道背包+分块,开始码,TLE。我继续查错。yp 建议我讲一遍思路,然后发现……有个地方根本就忘了排序……AC 了,感觉非常开心。然后发现那道背包,模数是 10^8+7 不是 10^9+7,但是我们并不会因为这个 TLE 啊……最后变成了 WA。应该是正解,没切掉还是挺可惜的。

近距离膜拜 Deep Dark Fantasy。右边是 quailty 神犇的队伍,quailty 神犇一直在卡某道 FFT 的常数……他提醒队友,某题注意二分的边界,yp 默默地修改了自己的代码……

五六十名。yp 表示,如果他是妹子,罚时再少一点,就能拿最佳女队了……

最后一天晚上,湖北十余名选手在某寝室打狼人杀。YMY 等同学耐心地教导我等游戏规则。


thusc。家长想让我去 pkusc,说这个可能更容易一些,我当然拒绝了。出发前做了几道 thusc 的题目,感觉还是有送分题的。

一试之前又没怎么睡着。北京的气候不适合睡觉。考试的时候晕晕乎乎的,前两个半小时只拿了 10 分。后来正常了一点点……勉强写了 T2、T3 的暴力。

二试心态放平和了一些,觉得能进面试就好。会做 T1,但是代码能力堪忧,两个半小时才和暴力拍上。无条件一本属于半小时切掉这题的同学们。

最后是无条件 60 分,NOI 前 100 名一本。


自己做了一点题目,然后又去雅礼集训。和武汉二中的 ZJY 住一个房间,愉快地玩耍。还有武汉二中的 nonamenotitle。ZJY 说 Sengxian 好可怕,其实我也这么觉得……家长带来的水果吃不完,于是分发给大家。她不敢敲 Sengxian 的门,其实我也不太敢。更要命的是,敲开门之后,突然觉得这位老兄的样子很搞笑,于是我俩开始狂笑不止,说不出话来……后来她想到了一个绝妙的词——

高岭之花。

临别之前,和 ZJY 打了一盘森林冰火人。

和 ahcisy 一起,看着淅淅沥沥的雨。

模拟赛的试题大部分都订正了,有一点是回家后才完成的。有的题目是听人讲了好多遍才明白的,感谢你们。>_<


NOI。结束了。

颁奖的时候,王宏博士问:“你是哪个学校的?”

现在我明白为什么总是这个问题了!我不喜欢把身份牌有学校和名字的那一面朝外……


写到这里,已经难以酝酿出提笔时的感情了。

曾经对高三生活很恐惧。无论想不想,都只能接受这个现实。

如果多做一些题,少一些对未来的顾虑,会不会好一点呢?我太早就开始绝望。

感谢所有给予我帮助的人,无论是教我做题,还是教我做人。

祝进队的各位每天过得充实而精彩,祝学高考的同学们爱上学习,祝几位低年级的同学,有一天能说——

chrt 学姐好菜啊!

再见。