Featured image of post 算法竞赛回忆录

算法竞赛回忆录

7002字

前言

如果拿 luogu 的建号时间来计算自己第一次接触算法竞赛的时间。那我已经断断续续地在这条路上走了 6 年了。

luogu 主页

不过实际上应该略早于这个的时间,因为我不记得是在 cpp 老师教的第一周还是第二周后我才开始建 luogu 账号的,差距应该不大。

2018 年,初二

第一次课的时候应该是 wxy 和 cpp 老师带着我们培养兴趣,好像还是在老校区的南五机房。

我还记得第一节课的时候,发了个有好几页的 docx 文件,让我们在本地的 Dev-C++ 上写代码,然后把代码复制到 ZLOJ 上提交。

我记得是没教过 Hello World! 的,不过里面应该有一篇代码长这样:

1
2
3
4
5
6
7
8
#include<bits/stdc++.h>
using namespace std;
int main(){
    int a,b;
    cin>>a>>b;
    printf("%d+%d=%d\n",a,b,a+b);
    return 0;
}

当时和朋友在讨论这几条语句的原理是什么,为什么这样就能实现输入输出。然后我把第6行的 + 全改成了 -,发现这个程序就变成了求 $a - b$ 的程序。然后改成了 *,发现这个程序就变成了求 $a \times b$ 的程序。

在临近下课时候,我把输入语句删了,然后把输出语句改成了 printf("I♥you");,然后在 cmd 小黑窗里真的就看到了 I♥you

虽然现在看起来挺简单,平常,甚至有点幼稚,但是当时的我真的很兴奋,比起课内枯燥的语文,搞不懂的数学,以及莫名其妙的科学,这种有探索感和创造性的学科真的很令人 Kira Kira~ Doki Doki~⭐

ZLOJ 中的 ZL 我认识,但是 OJ 是什么意思我不知道,在周末的时候在网上顺着这个词找到了一些乱七八糟的网站,也找到了 luogu

我让我妈买了一本《C++ Primer Plus》,也算是启蒙吧,平时在寝室无聊的时候学的。虽然学的不是很系统,但是感觉比起别的 OIer 还是好一点,尤其是对各种 STL 的使用。虽然这些东西基本没在算法竞赛中用到过。

后来应该是分了次班,到了新校区了,我依稀记得当时的班级氛围特别烂,或者说从此之后就再也没有好的班级氛围了。

然后开始了比较正式的学习算法竞赛。第一节课还有 小C 来讲课,讲了一些基础的东西,然后之后就一直是 cpp 老师在讲课了。也只是讲了些很基础的东西,大学生 1h 应该就能会的东西。
第一节课后我好像还记了笔记,手抄了一页,然后记得还抄了张超的名字和电话,但是我找不到这个本子了,也找不到这张照片了😭。(我明明记得有拍过照)

中间倒是经常去机房学或者摸鱼,把语言基础也都学会了,当时一度在 ZLOJ 上当了 rk1,不过后来事实证明水题太多也没什么用。

当时初二的普适目标大概是准备高中的提前招吧,也就是搞什么所谓初中数学竞赛和物理竞赛。当时自己的能力其实比较一般,后来还是考上了。

感觉记忆有点模糊,上面说到的很多事件时间顺序可能是乱的。

2019 年,初三

初三可能才算是真正开始的一年,暑假的时候被拉到机房集训,那一年 NOIP 死了,也就是打 CSP-J 了。

当时前期集训的时候感觉自己的水平还算可以的,但是一到后期就感觉自己的水平就落下了许多,尤其是面对一些思维题的时候。

也不记得当年自己对竞赛的想法了,不过失落和无力感应该是有的,最后 CSP-J 的成绩也只拿了二等,离一等线差了 10 分。

当时我们之中最时尚的单品就是 《明日方舟》,被万恶的控老师拉入坑的。在机房里摸鱼挂粥的日子确实很快乐。当时普及组结束后回归文化课的时候,很多人退了明日方舟的坑,我那时候没明白为什么,也许是自己太过年轻对这种东西看的太重了。
后来一直到了 2024 年 1 月 我才退坑,在初高中的时候真的很喜欢明日方舟,大学的时候感觉事太多了就基本没时间养了,再加上当时的轻薄本很难带动 MuMu 模拟器,就玩的很少了。

2020 年,高一

很多人会说自己的记忆在疫情时间变得很模糊,但是我仔细一想自己的记忆、爱好、社交圈都是从疫情才开始的。

上半年其实是在准备中考的。
疫情的时候挺慌的,中考内容都是抄的,高中内容也是抄的,当时还被 hhn 喷过一次。
然后每天要带着负罪感玩。最后是什么都没学到也没玩好。当时还是太年轻太软弱了,没法衡量自己的能力和时间。
从后来者的视角看,中考其实是不用准备的,考的多烂都可以上高中,考的多烂也能被拉到竞赛班,感恩 小C。
还有什么类似于高中的学考,在最后也没能对自己的升学产生什么用处,他们后来去打的清北营的条约也没什么用,高中就活在老师们编制的一个又一个虚幻的目标中。

不过当时还是认真准备了,体育中考仅在我们这届取消了,竞争也少了点。最后考的疑似挺烂的,但是我也不知道烂在哪里。其实每一门的分数都长得还行,但是总分就很烂。

然后暑假开始又去机房集训了,这次是综合楼的机房,以及 小C 当教练。

暑假的时候是比别人早开学了很多,有一次台风天的时候我们还没放假,小C 高兴地说:“又可以在机房快乐 AC了!”
然后第二天变成了水漫zl,不得不放假。

教练的话其实起到的作用不大,大部分时候都是在监督摸鱼状况,以及组好题。平时挺严肃的,感觉压力很大。偶尔也会表现出一些人性化的一面。

暑假的时候让我们每次考试后写一篇总结,发在有道云笔记上。比如这两篇 Test 66 2020.8.31 下午考试总结线段树专题总结

自己当时还是很喜欢写一些题解的,就像现在一样喜欢给自己学的知识雕花边。现在看看感觉写的挺幼稚的,但当时肯定乐在其中。
但是虽然写了很多篇总结,能吃进去的东西现在想想好像也不多,每次训练赛的时候就卡题

训练的时候的状态其实和初三差不多,觉得自己的能力也许就是这样了,当时想的是打完 NOIP 就退役了,没想到

然后从这一年开始要先考 CSP-S 再考 NOIP

CSP-S

CSP-S 的题目有臭名昭著的 儒略日,比赛的时候其实觉得自己考虑的挺周全的,打的对拍都没什么问题。第二题也是很快就切掉了。第三题看起来很重打了 20 分的切分,第四题无从下手(luogu 上好像是黑题)。

结果呢,儒略日漏了一个含 0 的 corner case,当时一度怀疑会不会炸很多个点(因为是多测),90 pts。
第二题也有神秘的炸 long long 的 case,当时没考虑到,95 pts。
第三题的切分没问题,但是赛后发现,把 if (n <= ...) 注释掉,可以拿 35pts。不过也没用了,反正多几分也还是二等奖。

这次打完之后还是很失落。因为一开始自己感觉还是很喜欢算法竞赛的,但是后来颓势明显,感觉自己的能力不如别人,也不如自己想象的那么强。
遇到那种强思维强数学的题目,自己就会不知所措。但是这两种题其实已经几乎涵盖了所有的题目了。

两次比赛可能都没有炸分,该拿的都拿了。但是奈何拿不来的分别人都会做。

觉得自己打完 NOIP 就该退役了。

NOIP

NOIP2020 是我算法竞赛生涯中打的最好的一次也不为过。我到现在还记得我是 $257 = 90 + 92 + 10 + 65$。也记得我是怎么做的每一道题。

出来大家除了第三题,估分和做法几乎都一致。都是 $100 + 100 + 60$,不过我第三题不大会,所以只有 $10$ 分。

但是大家发现第一题需要,第二题树状数组哈希会被卡常。

结果是第一题有被卡到 $60$ 分的,由于他们的 $\text{lcm}$ 的写法是错的,写的 a * b / gcd,而只需要改成 a / gcd * b 就有 $90$ 分了。(我记得这点好像有人强调过,所以我当时是这么写的)

第二题常数好的可能有 $100$ 分,常数差的可能有 $84$ 分。
这是我为数不多懒得卡常并且用了结构体写树状数组,呃呃了,赛时测的其实卡不太掉,虽然确实有点慢。

第三题我确实不会写,神秘构造。

第四题有好多段切分,都没挂,然后又多了 5 分 puts("No");

其实水平感觉不高,只不过大家分普遍炸的比较明显。第一次当上高一机房的 rk1。

NOIP2020一等奖,在 OI 中唯一捞到的一次一等奖

2021 年,高一

后来就是寒假集训了,当时挫败感非常强,留下来的人里,我每次打都是倒数。后来就决定退赛了。

过了半个学期,小C 跳槽了。

2022 年,高二

高二的选科我选了技术,信息技术基本很难低于 45 分。也因为这个选科,与 top 班无缘了。

分班后的第一次期中考试,我考了 班级rk1,借了技术 96 分裸分的光环。

后来到高三前应该都没掉出过前十。

另一边我们今年这届机房形势比较惨淡,没有能进省队的。

2023 年,高三

首考,技术拿了 99 分,比较惊讶的是物理能拿 99,但是化学只有 97。总共 424 分,rk1。

首考后就比较开化了,不再去纠结什么刻意的“努力”。因为我知道到最后我的语文和英语可能也就只有这个水平了,而数学还是要听天命。而大家也像之前一样,总是会赶回来的。

1.5模好像语文 96 < 化学。好像被语文大于我 40 多分的人超了。

2 模,忘记细分了,反正考的挺高的 669,疑似校 rk11。好像因为数学错了一个弱智 5 分题还被 🐍 说教了。

3 模,好像是650+,疑似班 rk11,是最差的一次,但是我也不知道具体差在哪。

高考后

高考,$111 + 137 + 129 + 99 + 97 + 99 = 672$,rk 4000+。

当时是觉得自己考的比较烂的,鱼鱼了很久。但是实际上这种卷子我也没法考的更好了(虽然数学错了多选第一题)。本来就利好文科人,自己之前积累下来的小三门能拉的分数微乎其微。
也就是所谓的“如果努力的尽头就是奇迹”。

高考发挥成什么样应该都很正常,更何况我本来也不是很厉害,比我更厉害的人也有比我差的。
从更为长远的去想,正常人都有幸运或者不幸的时候,而我满脑子想的只有自己的不幸,实在是太幼稚了。

满脑子只想着自己呢

填志愿的时候没好好填,于是没能到武大保底,也没能到西交的信息大类,当时还比较嫌弃哈工大冷所以没报哈工大。
没敢填那些需要转专业的学校,不敢。
于是到了一个我当初在志愿上填着玩的学校,分数线 = 我分数 - 5 的学校。又鱼鱼了两个多月,甚至一个学期。

上面的这种话我后来不敢说给任何一个人听,实在是太俗套了,以及我到大二的时候,每每在食堂里听到别的学校的名称我就会觉得刺耳。

后来想了想,这才是命运最好的安排吧。
在一个陌生的城市,一个没有人知道过往的地方,取得了还算不错的成绩,结识了一些因为我这种背景才能认识的人。

暑假的时候看的《合奏比赛》,挺感同身受的

2023 年,大一

契机

在高考考差的背景下,感觉自己还是想要做一点事情的,就像算法竞赛。

一方面是觉得这里竞争并不是很激烈,另一方面我得拿点什么比赛来证明自己给自己升值。
事实证明这两点可能都有错。虽然不是强校,但是我也不是强人。

在开学初还是比较高调的状态,现在的我看以前肯定会觉得唐。对什么事情都一惊一乍的,说话也很典的 OIer 风格。

开学前的时候,那时候只有浙江群这种渠道,在群里问了一下加上了戴佬的 QQ,没想到后来能一起组队。后来被拉到了群里。

了解到我们大一是没有名额打 ICPCCCPC 的,当时还挺诧异的,但是后来想想也是对的,我大一这个比样去打不是狠狠打铁。
不过正因为这种规则,我当时想的是只打一年就退役了。

比赛前

在刚开学上军理课的第二天,那时候坐我旁边的人在看 C语言 的教材,我在那边指指点点(现在的我根本不敢想)。
问了一下发现居然是我昨天回的贴吧的人。(问的主题帖是 ACM 相关)

后来有一天听讲座的时候,我和他在聊什么 scanfcin 输入之类的东西,旁边的人也过来聊这些,他和我是同一个班的,也有 ACM 的经历。后来成了我们班的学委,也是我打 ACM 一直以来的队友。

后来就开始打 codeforces,扭了很久终于上了蓝名。

新生训练赛

大一上的时候有每周有新生训练赛,每次大概都 4~5 名的样子。反正感觉自己比较一般。
盒了一下排在我上面的,几乎都是高中学到高二的。学的多且久,比我这种 NOIP 切分选手要强多了。
后来有后悔过高中为什么只学到高一,细想的话根本没必要后悔,自己当时也想清楚高二的时候没能力和他们竞争,也没能力学我那时不会的东西——大部分现在也不会。

校赛 BITCPC

大一上的时候还有一次校赛。和队友的学长组了三人队,开启了大学 XCPC 的第一场摸鱼。
赛时没被我读到签到题,然后后来他们讨论的时候我也在旁边想自己的。
比较有成就感的就是,我做出了一道 LCADET 的题,靠当时的线性代数推导的。
(利益相关,线性代数只有 94 分,专业排名 30+% 迄今仍然是我专业排名最低的一门。
在退役前偷偷地想过一次,自己好像训练过程能出思路的题大部分是线代题。

最后是因为巨大罚时,拿了银牌 rk1。开启了 XCPC 的传奇银首。
感觉得给队友狠狠磕一个。

BITCPC 银牌

2024 年,大一

寒假集训

寒假集训这段时间的训练把我搞得有点 ptsd 了。主要是当时打这个还是比较认真的,但是经常长期坐牢,很无力。
每天都有一场,然后只能看着别人做出来,自己却只能干看着。这种感觉真的很难受。
组队赛的时候就更明显了,看着队友在做,自己想不出来也帮不上忙。
这种感觉一直持续到我打区域赛的时候还是这样。

寒假训的可能还算比较刻苦,有补题以及回忆以前的东西,不过也没什么用。

后来打牛客寒假集训赛,第一场其实完完全全在动车上打的,居然让我 AK 了。

你能再讲讲牛客寒假训练营第一场 AK 的故事吗

后面几场打的其实挺正常或者挺烂的。到了我另一个能吹的点了:打水题可能比较厉害。
但是后来区域赛两次让我打爆搜我都死了这是为什么呢。

天梯赛

天梯赛的体验其实比较一般,感觉一直都在打水题搓代码,最后打到标准暴力分数 259 拿到了一个一等。

蓝桥杯

省赛在机房打,国赛早起打车去北工大。

蓝桥杯选的是 py 组,没想到这么水,甚至是 py 组全国 rk6。(忘了具体 rk 几了,反正很靠前)
感觉并没有打很多的有思维的东西,可能这就是暴力打满吧。

今年报了 CA 组,不知道会不会被薄纱。

北京市邀请赛

早起坐地铁去华子打,送的东西真的多。

烂完了。全场数学,摸鱼一整场。再次感谢队友带飞拿了银牌拿了小奖品。

门口牌子 银牌 小礼品

山东省邀请赛

花一个早上速通了济南。

最后有一道题没搞出来,拿了金牌。
那道题有点像寒假集训的最后一场的第一题,当时不是我写的,所以没想起来怎么写,不过最后一步还是差的挺大的。
后来才知道都是 SUA 出题组的传统题。

2024 年,大二

暑假集训

暑假集训就全是组队场了,牛客多校和杭电多校高强度打了 20 场。队伍的顺位还是比较高的,但是自己的表现一直都是很一般的。

前期还是会补题的,后来就没什么补题的欲望了。

由于顺位比较高,拿了 2 + 2 + 1 次区域赛的名额。

网络赛

史。

坐牢。

CCPC 济南站

铜。

开幕式 小熊

这场比赛我贡献了很大的锅:

  1. B 题卡了我非常久,一个若只的爆搜却一直 TLE,不知道当时怎么想的
  2. E 题就一个地方,我觉得有问题,然后改掉了,虽然也和队友说过了,不过当时可能没来得及想。

其它就是 C D 都没好好看,就一直卡在 B 和 F 上。

题目确实不大难,但是比较反传统,而且榜歪了。也是需要好好反思。也是需要加训。

在区域赛前,我想的是,我们队肯定会有金吧。结果第一场就拿了铜,实在不甘心。

之后就被剥夺了热身赛上午出去玩的权利(,就找时间 vp 一套题。

回去自己狠狠的训了一周。不知道有没有起效。

ICPC 南京站

非常可惜的一场,人类史上最大最恶绝望事件。
正好差 20min 罚时就金了。

开局我先敲了个签到,敲得比较慢,还让队友看看有没有问题。不敢用 STL 中的函数。
然后就一直在看 B 题了。这个 B 题看了我两三个小时。
最后为了简化消元操作,做了对 i & 1xor 的操作,然后之后就不会了。
wxy 做完 G 题后看我现在的子问题,一下子就知道怎么写了。
然后封榜后把 M 题的大致做法出了,不过我当时不大相信,因为复杂度完全不对。所以没敢打断戴佬写 F 题。
赛后看题解结果真的是这个做法。后来补题的时候 20min 写出来了。

最后看滚榜的时候,在银首的位置,离金只差 20min 的罚时。
或许少一发弱智错误就金了,或许我没被 B 卡这么久就金了,如果我能果断一点做 M 题就金了。

虽然表面上不算战犯,但是我这么弱其实已经算是战犯了吧。

太多的遗憾留在了南京。

永恒的机位

2023 2024

食堂 大飞机

NUAA真的好大好美啊😭 湖

袋鼠

20 罚时

ICPC 杭州站

最顺利的一集,虽然最后仍然有两道题没搓出来。

开局我看了一道 medium-easy 的题并鉴定为签到,十多分钟队友把两道签写完的时候我上去写,WA了一发。
想到了一个特例,等队友再签完再签完一题,确认后交了。

然后再讨论出了一道单调栈数学题。

疑似偷听了隔壁的做法,队友过了 F。

后来 wxy 神,又想出了 B,稳金了。(看了下榜这题没做出来也是金)

不过,封榜后,I 题一直没做出来,很遗憾。

不过我倒是一直没什么值得遗憾的,因为所能拿到的所有奖都超过我对自身的预期,每打一次都是赚到,所以感觉很对不起队友,他们的目标应该更高。

第一次坐飞机与火烧云 浙大

求是大学堂 湖

没到手的金牌用奖状替一下吧

CCPC 郑州站

郑州站的时候我已经摆了,当周一直没训练,因为郑州站当天有考试以及已经打过金了,打比赛打到一半就润了,甚至有让队友换掉我和别人去打 ecf 的想法。

赛中就敲了一道题还不是我的思路,还 WA 了一发。

最后没做出那道神秘哈希,银首 * 3。

郑州站的时候,打车经过一个“听党指挥,能打胜仗”,地图上看不到名字,回忆了一下是高中同学的学校(军校),问了问还真是,离我们酒店还挺近,第二天特地出来陪我面基😭

拍摄视角有点瑟琴了

ICPC EC-Final 西安站

体验非常烂的一次比赛。

安排在期末周,队友有考试于是率先打铁。
然后我那周还感冒了。不过到西安的时候其实好的差不多了。

赛前训了两次,其实打的还挺不错的,怎么到现场就狠狠拉跨了。

热身赛的时候场馆特别堵,很难想象这是西工大,办的比郑轻和南航差多了。
然后赛时网还炸了。

正式赛的时候网倒是没有炸,场馆还是非常的傻逼。

赛时三人红温打铁。

我在调一道模拟题,爆搜题,调不出来。感觉自己自认为“引以为豪”的代码能力是不存在的。连续两次被击溃了。
然后队友另一道数学题没做出来,也是莫名其妙不知道为什么,算法竞赛的最后一次比赛就这么烂尾了。

期末考也没复习好,牌子也没拿到,还连累了队友,报销可能也报不上。
想去泡温泉还被告知去的太晚了

不算好的好消息:一个赛季之内达成了金银铜铁的全成就。😊

JB 摊位送的很多小礼品 假装报名了华为挑战赛顺的小奶龙

坐到了哥哥的位置上偷拍的

西安唯一一家古茗

后日谈

如果能用一个词来总结自己的算法竞赛生涯,那就是“幸运”吧。

几次凭借运气拿到了不属于自己的奖,自己的能力可能确实没能达到。也非常感谢和对不起信任自己的队友。

也很幸运能这么恰巧地遇到这么好的队友,希望队友前程似锦,早日出线。

同样很幸运能选择信息竞赛,在高中枯燥的时候获得了另一个提升自己的机会(以及摸鱼的机会),并且打开了计算机科学的大门。

能遇见高中一起打信竞的朋友,至今仍然是最好的朋友们。

虽然现在对算法竞赛的热情已经不再,但是曾经获得的快乐和成就感是无法忘怀的。

虽然上大学之后就再也没给自己贴上打算法竞赛的标签,或者混算法竞赛的圈子。但是算法竞赛的经历仍然是我人生不可分割的重要一部分。

也许以后的路上不会再有算法竞赛,但从这里开始的故事,还会继续走下去。

Licensed under CC BY-NC-SA 4.0
最后更新于 Mar 18, 2025 15:42 UTC
使用 Hugo 构建
主题 StackJimmy 设计