OI 给我带来了……

· · 生活·游记

:::epigraph[OI 之于“文化生”] 有时候我就想啊,
如果没有 CSP,我还会认识你吗? :::

其实我第一次参加真正意义上的 OI 赛事(初赛不算),还是在去年。而那时的赛程表,我至今仍记得(完整版:2024 NOI 系列活动和认证日历)。

::cute-table{tuack} 时间 活动
9 月 21 日 \text{CSP-J1/S1\ 2024}
10 月 26 日 \text{CSP-J2/S2\ 2024}
11 月 30 日 \text{NOIP\ 2024}
(我参加的部分) <

但是,如果直接从去年开始讲,就很没意思了,不如从头开始。

:::warning[提示]{open} 只想看 \text{CSP-J/S\ 2025} 相关内容的,请直接跳到最后一部分。如果想了解前因后果,强烈建议看完全文,赶时间就算了。 :::

年度戳

2021 年:梦的开始,C++ 入门

你们知道来这里上课的目的吗?

故事要从 2021 年开始讲起。那年 7 月学校组织了一场测试,按照测试的成绩组建了一个社团的兴趣班,名曰 “信息学奥赛培训”。之所以叫兴趣班,是因为当时它免费,不过现在好像要钱了。

在那里,我完成了对信息的入门,也认识了很多有些经验的同学。其中不乏后来发展成的偶像,当然不止是由于这一方面,而具体事件就不在此赘述了,总之很甜。
之所以称作 “偶像”,一方面是第一眼就被他们吸引,另一方面是发自内心地想向他们学习。

那时,我们流传着可能只有我们才知道的梗,比如“嗨,我是 uncle_lu”“小理是个热爱生活的 xx”“P3724”“哎呦,我的屁股”等等。
(此时网络热词参考:数正方体、两只老虎爱跳舞、你叉叉唱日出)

而时间呢,只有半年,主要是在暑假和晚辅的时间,甚至只学到字符串的 strlen 函数,后面的我是真不会。但课程对我有如下影响:

对于学校来说,匆匆的过客或许算不上什么,只有最盛大、最重要的那年那场,才会成为不可磨灭的记忆。学生一茬接一茬地过,老师一批又一批地换,学校运作如常。
但对于个人来说,学校的种种活动却给我们增加了锻炼的机会。

2022 年:体验初赛,复赛停摆

2022 年的暑假,我们开始了集训,还是老师放视频。但似乎不像之前那种系统地学,出现的概念都太陌生了:树和图、同余……实在不记得有哪些了。反正对于当时的我来说,这些真的很难理解,甚至我去年都不知道什么是度。

然后就到了 \text{CSP-J1\ 2022},是去我现在就读的学校考。

2022.9.18(Sun.)

据资料,这大概是第一次见你校,去考试的,没过。

而且说来也巧,那两年因为疫情,\text{CSP-J} 都没能如期举办。也就是说,就算我过了线,也参加不了入门级第二轮。

2023 年:极度充实,但 OI 缺席

那年,\text{CSP} 总算恢复正常,但我硬拖着没报。

我不想去比赛,主要是能力不足,没信心了。 :::align{right} 2023.9.16 :::

其实一方面,我拖时间,导致老师并没有及时审核完所有步骤,故报名并未成功;另一方面,报名的其他同学都有学习或者上网课的经历,而我几乎没复习,何德何能跟他们“同台竞技”啊!

我们班有两位同学参加这次 \text{CSP},他们都获得了 \text{CSP-J\ 2023} 二等奖,成为了我们学校第一届获奖的同学(当然,不止他们获奖)。恭喜他们(撒花)!

那年虽然几乎没碰信息,但我跟偶像(其实都是同班同学)终于有了较频繁的互动,也迎来了我人际交往的高潮。

2024 年:好奇,我几斤几两?

报名

去年,我报名了。9 月初,老师主动联系了我家长,说了些相关事项,拉我们进了信奥群。

说实话,我并没想到仅仅报个名还能训练什么,只是单纯想知道自己水平如何。

第一天,老师给我们一个 124 网站(其实是学校的 OJ,现已弃用),让我们在上面做初赛模拟。而我缺得实在太多了,老师说不懂的可以上 OI Wiki 找,哦。

后面的训练,在校本课、晚自习和周末,基本上是打模拟赛或者自己补题。不过因为我要补课,大都是请假半天上半天。就算在训练,大部分时间应该也在 做作业 (反而更爽)。停课训练也是不申请的,就没想过做竞赛生。

但该说不说,我在这 真正学会并用上 的似乎只有 freopen

第一轮(初赛)

2024 年 9 月 21 日,学校刚好安排上午体检。体检完还可以假装志愿者引导考生找考场(因为是在本校考),开心。后面铃声响了,我也进了我的考场。不知何时改成了填涂答题卡,嗯就这样吧。发现上午小朋友真的好多,想起当年的他,他会不会也是这样呢?

下午要先集合,签到了再考试。下午的考试给我发呆的时间就很多了,因为基本看不懂题,只能敲敲抽屉的横杠。考场的空调打得还是 太冷了,老师的通知又要求穿校服,然而只发了短袖……

考完之后,我还去做了志愿。说是志愿,其实就是把食堂的连体桌搬到体育馆。谁能想到,我在这场考试之后竟然还有心情做志愿,哈哈!

几天后,分数和分数线出来。我 J1 过线了,S1 没过线。去找老师,S 组推荐晋级,也算报上了。

比赛篇

CSP-J 2024

10 月 26 日,这天刚好是我一位偶像的生日,祝他生日快乐!

T1,扑克牌(poker)。 我选用字符数组存输入,在线处理,用了一车 if-else,转换后存入 bool 数组(相当于桶)。最后统计桶为空的数量,输出即可。

T2,地图探险(explore)。 我只会模拟,然后就特判边界和障碍物。

T3,小木棍(sticks)。 我还是有兴致做这题的,打表发现好像有 1,2,6,8 的规律,但是好难推啊。甚至提交时 freopen 还被注释掉了。

T4,接龙(chain)。“是否存在一个可能的游戏过程满足任务条件”,存在性问题除了穷举,我没有别的办法。然而我有点晕情况,故放弃。
诸如子序列、图论、动态规划相关的题,只要被我看出来,就必定不会做。

赛时,监考老师还会逐个 检查 FrC 和选手文件夹。其实之前训练时,校内老师就让我们试过了,不过之前还真不知道这个在桌面上默默无闻的东西是干什么用的。校内老师还让我们把 文件大小 记出来,考完及时核对。

之前常在课上举例“碳硫磷”时会心一笑,现在竟也成了事实。所谓“临渊羡鱼,不如退而结网”。我最初的小目标,就是与去年的你,在那样的测试中相当;至少这个小目标实现了,尽管目前似乎没什么用。
碳硫磷,即 CSP。然而入门级的奖对于现在的我来说,自然没什么实质性的帮助。

最终,我获得了 \text{CSP-J\ 2024} 二等奖,成功得到期盼已久的 绿钩

CSP-S 2024

T1,决斗(duel)。 先排序,然后浅浅用一个贪心,随便匹配一下吧。

T2,超速检测(detect)。 写了一车代码,还是晕情况,而且跟我之后的物理差不多了(呜呜,物理到底要怎么学啊)。

T3,染色(color)。 方案题,“最大化最终得分”?用了一个桶计数,然后条件求和再除以二,不知道在算什么。

T4,擂台游戏(arena)。 为什么不告诉我“真正的能力值”?还有这异或一车数据的……

另外,如果同时报名 J 组和 S 组,第一轮其实还好,第二轮上午下午 都要面对这电脑,感觉眼睛快瞎掉了,有点吃不消。

下午考完,老师还给我们提供了汉堡和可乐,不知道她是怎么进考点的哈哈。

NOIP 2024

本来我以为,到这里应该已经结束了,我也圆梦了,结果并没有。

老师:我们学校,所有高中生都进到 \text{NOIP} 里了哦,好好练吧。 :::align{right} 2024.11.9 :::

啊,怎么还有?这场倒是免费的,听说还能写到阳光高考里。不过这推荐名额是这么用的吗???

这天是 2024 年 11 月 30 日,11 月的最后一天,考点跟 \text{CSP-S} 的一样。

T1,编辑字符串(edit)。 回看我的代码:

if (n <= 10)
    for(int m=1;m<n-1;m++)
        for(int i=1;i<=n-m;i++)
            //……
else
    for(int i=1;i<n;i++)
        //……
for(int i=n;i>1;i--)
    //……

考场代码,改好缩进是这样的,看来当时是很无助了。朴素算法,可能实在太想要这部分分了吧。

T2,遗失的赋值(assign)。 假装发现公式,如果存在 c_j=c_{j+1}d_j\ne d_{j+1},输出 0,否则直接输出 (v^2-m+1)\bmod mod。呃呃,总之能过样例。

T3,树的遍历(traverse)。 讲个笑话,cout << rand()%mod << endl;

T4,树上查询(query)。 秘制小代码:

int dep(int u) { return u-1; }
int LCA(int l, int r) { return l*r; }
// 主程序内
for(int i=k;i<=r-l+1;i++)
    ans = max(ans, dep(LCA(l, l+k)));

写得还真像那么回事。

考完同样发了汉堡,没想到竟然还有高三生请假来考。

而十一月底,最近的一次,跟那些人相比,实在实力悬殊,这无可否认,但你也比我高了足足几十分哪!可别小看这点差距,我只是“有意栽花花不发,无心插柳柳成荫”;而你不一样,你有投入,自然有回报,我是难以望其项背的。你去年说:“我觉得你上你也行。”只是比较简单吧。

最终,我获得了 \text{NOIP\ 2024} 三等奖 (竟然有奖)

故事还在继续……

对“第一次”的总结

比赛的事就告一段落了,说实话,能参加这种活动真的很幸运,也算是对我 2021 年初学信息的成果验收吧(因为除此之外,比赛前我没补进任何知识点)。

还能再和之前的一位同学一起训练半年,真的很难得,也很令我感动 (各自做作业真的很爽)。他好厉害,获得了 \text{CSP-S\ 2024} 二等奖和 \text{NOIP\ 2024} 三等奖,恭喜!

去年 12 月,校本课没了,而后来在晚自习时我也渐渐不参加训练了。

那么,还要继续吗?

对于你来说,这到底是爱好还是技能呢?爱好是感兴趣并愿意为之坚持投入的,而技能则是拥有的能力,或深或浅。比方说,你爱吃辣和你会吃辣,显然不同。所以,你还有当初的激情和勇气深耕下去吗?

平心而论,我真就只是玩玩,从来不打算靠这个吃饭的。

后来,我偶然发现了一本书,叫 《算法竞赛进阶指南》,我在 读秀 上看完了全书。虽然刚开始一知半解,但这种“输入”总归是有用的。我对这些概念渐渐有了初步的了解,有时甚至会跟着书打一些模板代码 (虽然背不下来)。不管怎样,现在听到这些名词时,我不会再觉得陌生,虽然未必会实操。

我也尝试做 \text{CSP-J\ 2023} 的题,T1 可以得 90\text{pt},T3 调了足足半天才 AC(如果是前年,我大概也很难熟练计算 \Deltax_1,x_2 吧)。

从年初到现在,尽管结果常常不尽人意,但我依然会参加周末训练。

CSP-S 2025

今年是 2025 年,我没报 J 组,S 组第一轮 终于过线了,可以直接晋级第二轮了。

这天是 11 月 1 日,11 月的第一天,考点跟 \text{CSP-J\ 2024} 的一样。故地重游不禁感慨万千,一年就这么晃晃悠悠地飘走掠去,想故人应是没来过这里吧 (如果有别的活动当我没说)。这里竞赛氛围浓厚,前不久的牌子还未拆,当时热闹的景象历历在目,但那些人也早已不在了,只剩下初出茅庐的我们。

T1,社团招新(club)。 感觉题目出得挺应景的,最近正是部门、社团纳新的好时候,又是部门面试的时候,哈哈。看到特殊性质 C,我的第一反应是,既然是独立均匀随机生成,那么每个新成员应该都能被分配到满意度最高的地方,打完后那个样例也确实过了。再看特殊性质 A,显然排完序把剩下一半满意度不高的调剂掉即可;特殊性质 B 就已经很晕逻辑了,感觉要动规,不会。顺便打了一下 n=2 的情况,每种搭配求和取最大值,n 再稍大一点就很晕了。

T2,道路修复(road)。 看了一下,k=0 时比较容易画,但是画出图后也不知道删掉多余的边要怎么表示。其实我还是不会存图。

T3,谐音替换(replace)。 大概看懂题意了,但是求方案数的问题还是不太会。既然有输出四个 0 的样例,那我也输出吧,“不可以,总司令”。

T4,员工招聘(employ)。 注意到,要是 m=n,则只要满足 s 中不出现 0,答案就是 n!,否则为 0,而程序也是这么实现的。至于在 m<n 时能否成立,我也不知道。

考完发了汉堡和冰红茶, 下午还看到的牌子已经褪去,好像什么也没遗留下来;我们像现在这么学习啊,竞赛啊,到底又剩了些什么呢?我不知道,但这背后的意义似乎也没那么重要了。也许除了自己,大概没什么人会好奇吧。

(以上从“这天是”一段开始,为 2025 年 11 月初补充,其余部分于国庆假期完成)

继续加油吧!信竞也是,文化课也是,其他方面也是

:::info[注明]{open} 本文包括小标题在内,没有使用任何 AI 工具进行辅助。全部是我自己一个字一个字码的。 :::