最后的台词

· · 生活·游记

:::align{center}

前 言

:::

以此文来纪念我短短的两年 OI 生涯。文笔不好,还请多多见谅。

注:NOIP 2025 部分在“最终幕”。

:::align{center}

序 幕

:::

小 E:尽管 CSP-S 2025 挂分如此惨烈,我们还是取得了参加 NOIP 的资格,实在是不容易啊。

小 F:(叹气)不过,离 NOIP 2025 可没几天了。

小 E:(不由自主地重复)我常常追忆过去……曾经的日子无法重来,我只不过是一个过客……

小 F:这是你的“回忆”吗?还是舞台预设的台词?

小 E:我该在哪里停留?我……

小 F:问你自己。问谁都得不到答案。

小 E:(环顾四周)我们好像在被什么人看着……好紧张!

小 F:他们在期待着我们的表现。化学有一个省一,数学也有一个省一,我们自然也不能少。

小 E:他们的期待,有那么强烈吗?

小 F:是……是吗?他们半场开香槟,把我们忽略了,但总有人在期待着。

小 E:他们的眼神,有这么炽热吗?

小 F:是啊,就像聚光灯一样,要把人烤化。

小 E:我们的表现,真的很重要吗?

小 F:是啊。

小 E:竞赛原来是这般残酷吗?

小 F:是啊。

小 E:如果 NOIP 结束了,我将何去何从?

小 F:我将回归高考这个舞台,然后走向下一个舞台。

小 E:如果这回还是没有拿到一等奖,又要怎么办呢?

小 F:就像那位数学竞赛的大哥吗?奋斗了六年,从省二再到省二,最后竟以省三收尾。

小 E:我不知道……就算这次侥幸拿了省一,我也不知道……

小 F:……

小 E:当初选择信息学竞赛的理由……我必须说出来,这最后的台词。

小 F:尽管用你的实力证明。去夺得那颗星。

小 E:……

我最初的台词,就像遗失的赋值一样,已经找不到了。我站在 OI 这个舞台上,究竟是为了某种“闪耀”,还是仅仅不想谢幕离场?

:::align{center}

第一幕 初选

:::

我在上高中之前都不知道有信息学这一学科存在,直到一节电脑课——老师让我们这些数学又好、又会用计算机的来参加信息学奥赛小组选拔。

我看着其他人也参加,那我也去咯?于是我走到讲台,在报名表上填上自己的名字。

随后是一场考试,我从未见过里面的任何题目。不过以现在的眼光来看,这些题目已经十分经典了。

我不知道,命运的齿轮已经悄然转动……

不出意料,我被选上了,而其中一位同班同学不想放弃午休,提前离场了。

我早已忘却中午的第一堂课所教授的内容了,只知道有热心的高二学长来纠错,他指着我报错的那一行代码说,这里是 endl 哦!那一刻,我终于能分清 1l 了。

当时的我不善言辞,不懂提问,只会死磕,在 AI 还是大笨蛋的时候,常常在 WA 和 TLE 之间反复横跳,常常陷入无限递归和重复子问题的疑问中。

教练讲完贪心算法没几天,学长端来最新的词典,把我连题目都读不懂的人给吓哭了。

最后直到 AC 了,也还是不知道为什么要这样做?这样做为什么是正确的?我只知道这样做可以达到目标,于是如法炮制,打造出了无需验证的“贪心之剑”。它看起来是那么有力,又是那么脆弱。

不管是过去的我,还是现在的我,对贪心都理解得不够“深刻”。

两周后,机房传来好消息,今年有两位学长得了 NOIP 一等奖。一位是社长,另一位是副社长,零基础。

零基础……我也可以像他一样,摘到那颗星星吗?

那位零基础的副社长,并非零基础。他在初中漫长的 Python 探索中,偶然领略到了 DFS 的本质。

但当时我不知道。

寒假集训,学长们想给我们点颜色看看(Colorful OI),可还没过三天,就因高三提前放寒假而终止,我的寒假又重新充满了色彩。

教练推荐我们去参加省赛,可没想到高于 CSP-S 初赛难度的市赛一下刷掉了一火车人,只留下五个人参加省赛。我刚好踩着线,获得了参加省赛的资格。

我仍然记得“七选五”(T1,一个组合计数问题)对我的巨大打击,为此,我与后来的数学老师讨论方案数量的计算,但我哪懂什么容斥原理啊。

明明写个 DFS 就有 70 分,为什么我四题加起来只有 20 分?

幸运的是,只要不爆零,都有奖。我就这样拿了三等奖。至少有奖了,不是吗?

:::align{center}

第二幕 首战

:::

暑假集训,刚好高三开学。他们不集训,而是给我们组模拟赛。

其他同学都在外面玩,为什么我在这里集训?不过机房的氛围太过松弛,这里和家其实没有什么区别。

我逐渐认清机房里的所有人。不得不说,他们真是喜欢摸鱼,什么领域都略有涉足。

但打起模拟赛,还是有点实力的,我只能排中间。

集训后一周,高二的帷幕已然揭开。迎接我的是第一次正式比赛。

CSP-S 第一轮很顺利,大部分人都进入了第二轮。我甚至获得了第一轮一等奖。

看嘛,至少我不是啥也不懂的小白了。但同为一等奖,与社长的分差却有近二十分。

不过,第二轮就没那么顺利了。T1 前前后后花了我两三个小时去调试那个神秘的“排序 + 双指针”做法,却死活过不了最后一个样例。

一出考场,听到“统计众数个数”的做法,整个人都沉默了。这么简单的做法,只需仔细观察样例 2 便可轻易得出。

后来发现同机房只考 100 分的人几乎全被刷下去了,只有一个依靠较高的第一轮成绩而惊险晋级 NOIP。我呢?神秘做法拿了 75 分,后面两题拼了特殊性质 A 和暴力各拿了 20 分。

总之晋级了,顺便拿了第二轮二等奖。

一个月后的 NOIP 2024,没有奇迹。

继续死在 T1,死在可滑动的、不可滑动的 01

几周后,结果出来了,45 分,两个特殊性质的 40 分和莫名其妙的 5 分,除此之外一无所有。

社长拿了 204 分,副社长拿了 120 分。

机房洋溢着一股乐观的气氛,觉得社长考得这么高,肯定能拿省一。

过了一周,分数线出来了:220 分。史无前例的新高。机房又陷入沉默。

社长只要做出 T3 k = 1 的部分分,就可以拿省一了。

只可惜,我不能假定他人的人生,也不能假定自己的人生。就像列车必然开往下一站,不能倒退一样。

但他笑着说,这弥补了学校历年没有 NOIP 二等奖的遗憾。

我以这 5 分的微妙优势当上了下一任社长。现在看来,我自己都觉得不配。

十二月的游园会,我坐在咨询台后,旁边正是之前提前离场的那位同学。如今的他因成绩名列前茅而更加帅气,不少家长找他咨询学习上的问题。我坐在一旁,看着他滔滔不绝,而我面前队列的长度在 [0, 2] 之间。

也许还是太不亮眼了。堪堪三等奖,不懂的家长以为是个垃圾,懂的家长认为这就是垃圾。

只是想到不肯放手之物,我的心就隐隐作痛。我还不想放弃。

:::align{center}

第三幕 谎言

:::

没几天,信息学小组的末日到了。

那是一个星期四,我们像往常一样中午去机房聊会天,然后各自做题。

我到的时候,只剩下高二和高三的几个人。

不久,教练带着严肃的表情进来,叫我们剩下的高二学生去阶梯教室开一场紧急会议。

临走前,上一任社长告诉我,竞赛班的氛围不是很好,有人享受着优待,以为高人一等,不愿意下来。有人很厉害,但大部分人在摸鱼。你要慎重考虑。

当我看到讲台上站着的是竞赛部主任和校长时,我就感到不妙。

我从他们口中,只能听到贪婪的幻想:每年稳定出省一,数学出省队……谁不是这么贪婪呢,什么都想要,纵使是悬挂在高塔之上的双星,也想要用强制命令摘下来,哪怕会犯下摘星之罪。

但我读过剧本,这实现不了。不是愿望实现不了,而是在这里,在这个单凭修改数据、单凭傲慢口胡、单凭极低的实现能力建起来的危楼中,什么都实现不了。

教练也附和起来,批评我们的学习态度和策略。他的眼睛失去了往日的光芒。

但我知道,这不是教练的本意,他只是迫不得已。

尝到去年两个一等奖的甜头,竞赛部主任突然狮子大开口,要求将整个信息学小组纳入竞赛班体系,否则不得继续。

讲台之外,所有人都在犹豫着。

“你要是没有拿省一的决心,那你就别进!滚去学你的文化课!”

大部分人都沉默了。没有人愿意将自己的人生献祭给充满不确定性的竞赛,特别是在这个节点。

这几天,机房恢复了久违的、死气沉沉的寂静。曾经的喧嚣,如今像被格式化一样消失了。

第二天中午,我来到办公室,与教练聊了好一阵。他不喜欢这样的决策。此外,他想继续在中午开放机房,不让我们因此断送前途。

过了几天,班里空了一个座位,又有从竞赛班退出的炮灰来填充这个位置。

高一和高二,各三个人进入竞赛班,代价是签订“文化课排名”的契约。其余的,要么退役,要么等候时机。

我还在等候时机。我不想放弃。

过了一两周,我重回机房,这里剩下的人屈指可数。他们好像在远离什么。

我抬头一看,一个新的监控。不用想,那是主任的眼睛。

我侧对着监控坐下,监控只能看到我的脸。

但我还是觉得不安。机房只剩下了键盘声和叹气声。

在长久的注视下,我开始失去热情,开始失去一切了。一切都变得虚无缥缈。

我日复一日随机跳题,随机选择做或不做,但是,为什么呢?“不放弃”什么的,简直是天大的谎言。

又一次省赛,又一次以省三收尾。

参加完暑期培训,高二的三名同学还要回到学校参加开学考试。

结果出来了,三个人全都被踢出竞赛班,与此同时,十几人从最优秀的班级里被选调进入。

有其中一人的成绩已经符合契约要求,但理由——因为有些同学没参加开学考,他们的成绩都很好,所以他们的排名应该排在你前面。

十分可笑。

我不理解。他们费尽心思,只是为了把那三个人赶走,只是为了诱骗新的祭品,来粉饰那摇摇欲坠的数据。

也罢,在这个舞台上,规则从来不是为我们制定的。

至于高一的三名同学,还没轮到他们的审判时刻。

:::align{center}

第四幕 轮回

:::

又到了九月,又迎来了 CSP-S 第一轮,我又获得了第一轮一等奖。

又到了十月。我出了一套题,打算在第二轮前给他们做做。

轮到我上去讲题,却发现……

这题是动态规划,我们设 dp[i] 为……

但下面有人问,为什么要这么设计状态?

空气凝固了。

我讲不下去了。我什么都知道得不够深刻。我像是在背诵台词一样,甚至还背不熟。

我真是不配当社长。

第二轮,又是二等奖。但这一次,本有可能拿一等奖。

T2 零分,几乎是不应该的,只要察觉到是那一行出错……

但我看不到。在赛场上,我一直以为是其他地方出错。

并查集的合并错误,葬送了可能的 56 分,也葬送了离得最近的星星。

幸运的是,社团招新很成功,贪心策略也是正确的,我的“贪心之剑”看起来更加锐利了。看起来我不用管它了,它看起来已经很强了。

我回过头来写游记,却发现今年的获奖经历与去年高度重合。

第一轮,获得一等奖。第二轮,

我按下 Tab 键,IDE 自动补全了“获得二等奖”。

这是轮回吗?我问我自己。

第一轮,获得一等奖。第二轮,获得二等奖。NOIP,

我按下 Tab 键,它却不动了,只留下闪烁的光标。

但我到了机构里集训,终究没能再遇到比我出得更加美妙的题目了。如同教练所说,最好的模拟题总是在现役选手手上,不会轻易给你。

每天一套题,上午做,下午讲。题是很奇怪的,但为了维持手感,我也只能硬着头皮做下去。

NOIP 真的会这样考吗?我问我自己。

那群大学生甚至高中生一边骂出题人,一边讲题,顺便吹嘘自己的 OI 生涯。

别人在附和着聊天。起初我还听得有劲,但后来我才意识到,这和我有什么关系?

随后是专题串讲,起手就是紫题黑题。我要跟着那些人一起附和着口胡,或者转头补上午的题,还是去做往年真题?

我无法排除那些杂音,只好当个木偶,跟着那群人口胡,假装知道那些高深的魔法。

但我的心是空的,我的脑子也是空的。我在日复一日的循环中,迷失了自我。

不知不觉,距 NOIP 2025 还剩 0 天。

最后一晚,我独自躺在宿舍的床上。只剩下我一人,舍友已经回家。

熄灯。周围一片黑暗,一片寂静。

明天下午一点,我是不是要退役了。我能否握着“贪心之剑”,重新摘到属于我的星星,斩断这该死的轮回?

明天的舞台,谁也无法预测。

:::align{center}

最终幕 NOI Plus

:::

开始了。最后的战斗。NOIP 2025。

倒计时:04:30:00。比赛开始!

压缩包密码:<++>。在一瞬间,它变成了 !noip@Nov29,2025:dream,好像在告诉我,这并非 NOIP,而是无法预测的魅惑舞台。

幕布拉开,T1 的灯光亮起。

我陪小 R 一起踏入小 X 的糖果店,五颜六色的糖果各自堆成山。但小 R 转头问我,不同的糖果拥有着梦幻交织的价格,我要怎样才能买到最多的糖果呢?

真是个贪心的小 R。我挥舞起熟悉的“贪心之剑”,试着一直砍下目前价格最低的糖果,可小 X 摇摇头,告诉我这买不到最多的糖果。

我不甘心,又想先尽可能买完性价比最高的糖果,然后再单独买其他糖果。

“还是不太对哦。”小 X 笑着说,“就差一点了。我可以买 83 个,但你只能买 82 个。”

这好像在嘲讽我“无论怎么贪都不对哦”。

这真的不对吗?这确实不对!但要怎么做才对呢?我好像陷入思维定势的螺旋中,怎么想都想不到新的做法了。就像挥舞着剑,但每次攻击都不能直击要害。

我不想买糖果了,但小 R 又强行拉开了 T2 的幕布。

这时糖果店已经没有之前那样兴旺了,小 X 在清仓甩卖,一颗糖果只卖 1 元或 2 元。看见小 R,他微笑着说:“又来了?你还是那么喜欢糖果。”

小 R 真是个追求性价比的狂热者,只是不满足于小 X 目前的甩卖策略,又问我,在所有甩卖策略中,按照性价比能购买到的糖果的原价总和最大的方案有多少。

真是个喜欢数数的小孩子。我带他遍历所有的方案,但不知为何,按照性价比购买的原价总和,有时比不上其他购买策略,却被我误纳入答案中。我毫无头绪,寄希望于测试数据不会出现这样的情况,好让我获得最基础的暴力分。

我真受不了了,于是抛开小 R 和小 X,逃离糖果店,但没走几步就看见 T3 赫然耸立,就像一棵直冲天穹的树一样,遮挡着我的去路。说是“直冲天穹”也不太对,最高也只有 800 米,但每个分叉点都有个空洞,看起来自然数很喜欢在这里栖息。

这棵树的价值好像遵循着某种 \text{mex} 法则。尽管这棵树不够高,但还是吓退了我,连最朴素的 O(n^n) 暴力都不敢写。

我又逃向 T4,那里只有一个长度为 n 的整数序列,看起来很友好,可以任我宰割。

可当我一靠近,它对我发起了 q 次猛烈的序列询问。它喜欢长度在一定范围的区间,可唯独不喜欢我手上的线段树。在如暴雨般的追问下,我的线段树也显得十分乏力,只好含泪打出 GG。

倒计时即将归零,我才意识到现有的策略会“错误”处理“不同糖果拥有相同价格”的情况!

我拼命跑回糖果店,对该情况做出特判,手指在颤抖……可一旦逻辑判断错误,糖果店将不复存在,属于我的那颗星星也将永远沉沦于黑暗中。

倒计时:00:00:06。比赛即将结束!

就这样吧,一切都无所谓了,无论是 WA 的必然,TLE 的漫长,还是 CE 的虚无。

至少在这里,我思考过,我实现过,我闪耀过。

倒计时:00:00:00。比赛结束!

即便往不可做的歧途思考,即便实现十分繁琐且脆弱,即便在无人驻足的舞台上闪耀……

至少我完成了这最后的演出,哪怕它丑陋至极,哪怕它错误百出,哪怕它舞步迟缓……

:::align{center}

幕 后

:::

一切都结束了……一切都结束了。

走出考场,同伴的口中满是“坠机”和问候出题人的言论,不用点开语音都知道要说什么。

但我知道,我不得不狼狈谢幕了。

没想到,这几次比赛决定我不能拿到一等奖的算法,竟然是贪心。我的“贪心之剑”,远没有我想象的那样锐利,既砍不动杂鱼“决斗”,又切不动中等史莱姆“编辑字符串”。只是在赛场上斩获“社团招新”,我就误以为我的贪心策略已经练得炉火纯青。

当我站在糖果店的废墟上时,我才发现手中握着的,只不过是生锈的钝铁。讽刺的是,那些在样例 6 输出 82 的程序,竟然能完整通过所有测试数据。

是我没有摘星的欲望,还是没有摘星的实力呢?

大概……两个都没有吧。

过了几天,我还在家里休病假,教练就提醒我查询成绩。

熟练地输入考号,熟练地输入密码,然后看到的就是这种东西。

::cute-table{three} candy sale tree query 总成绩 说明
50 0 0 5 55

这已经宣判了死刑。但从某种意义上来说,我跳出了轮回。

现在眼前只有一条路。

列车即将进站。

下一站:高考。

但是我还没有说出,我最后的台词……

不对,我好像,已经说完了。

:::align{center} 愿屏幕前的你能够摘到属于自己的星。

拉下帷幕吧,有缘再会。

:::