2025ICPC南京站游记
思索了许久——这是我第一次参加 ICPC 线下赛,也是我们队的首次线下亮相,却并未取得理想成绩(几乎垫底)。愧对队友、教练,以及自己从 2024-12-27 到 2025-11-09 的大半年训练。但若不总结些什么,又如何在未来记住这份耻辱呢?
南航
早上六点起床,带着满腔卷意坐上了开往南京的高铁。虽说极度困倦,但一路从杭州向北,视野从山地渐入开阔平原,天地开阔,心情也随之舒朗起来。

11:42 抵达南京南,一上午没吃饭,我们队已经饥肠辘辘。从南京南前往南航异常便利——一站地铁,之后步行五百米,就能从南航小西门进入校园。刷身份证进校后,我们立刻开始寻找“能用券”的食堂,毕竟南航大方地给每人每餐发了 25 元餐券😋,不用白不用。兜兜转转,最终在三食堂找到了可用券的窗口,便迫不及待地享用这顿来之不易的午餐。
南航食堂确实名不虚传,看来教练说“全国大学食堂天花板”并非虚言。反正比你 winA 区好吃就是了 😋

吃完饭,前去体育馆签到,这路上行人怎么这么少😾。
抵达 ICPC 最难站——南航🤗。今年的队服是袋鼠配色加绒款,很适合这两天南京阴雨绵绵的天气。但我们来得晚了,非凸科技的吧唧和 fufu 都被领空了😭。

距离开幕还剩1小时,不如逛逛南航。

南航的飞机挺多,有一架的机翼延伸出来,我轻轻摸了摸,感觉像是塑料、金属的混合。
开幕&热身
开幕式上,南航计算机学院、华为、非凸科技等嘉宾先后致辞,台下开始了袋鼠的剧场,南京站的吉祥物还是大好玩,各种姿势都可以摆出。

接下来进入热身环节。因为是我们第一次参加 ICPC,我先检查了码位,结果发现 vsc 并未配置 cpp 环境,还是在shell里用g++吧。
不愧是袋鼠站热身都是袋鼠,记得B(交互)C题是纯签,D题是个 $m\times n$ 的网格内放满了袋鼠,有UDLR四种移动方式将所有的袋鼠移动,超出网格的袋鼠不计,然后考虑该网格中有一处洞,这个洞会将经过这个洞的袋鼠去掉,给出操作的串和最后剩下的袋鼠数量,求洞可能的位置种数。
这题我们队最后讨论出来是用预处理,先在该网格的中心(此时网格为 $2m-1 \times 2n-1$ )做该串的操作,做过操作的cell++,然后再做二维前缀和,接下来扩展网格,做这个网格内 $m\times n$ 区域的二维前缀和,如果该cell的值为最后剩下的袋鼠数,那么ans++。但是又为这个复杂度优化的问题纠结了很久,还是没写出来。
第一次真正感受到袋鼠站的风格(多图、树),希望明天不要来太狠的,尽管俊杰说南京与成都是今年最难。
休息
热身赛结束后,我们先去酒店放下东西。因为我与在南大的好友约好了,让他带我们逛逛新街口。时间不多,但也算走马观花了一番。

德基的厕所竟然如此高端?😶
次日早
早上起床,教练群里发比赛提醒,我们还在地铁上讨论要用到手写乘法的题很少吧,袋鼠站毕竟图较多。
到南航后先买早餐。一个肉包两个奶黄包共五块钱,味道意外地好吃。寄存完东西,准备开赛。
比赛前我顺路去上厕所,路过气球室时偷瞄了一眼气球数量,直觉告诉我:绿题应该是签到,其次是蓝题。
上完厕所,我立马把这个好消息告诉队友,队友半信半疑,万一签的气球早就被拿走了呢?
正式比赛
比赛正式开始。我们决定只在必要时翻译中文题,以节省时间。
我猜签到应该在绿题,于是马上去看 C 题。我看英文题面像因数分解,写了五六分钟后发现逻辑对不上。把题意解释给队友后讨论了一下,发现其实就是奇偶性问题。提交通过,但已用近20分钟。
看榜上,接下来的一个是K题,看上去是一个博弈,就是中国象棋上只有两个棋子,“车”和“马”。马先动,输出车是否有必胜的策略。我一看就知道要么有周期性,要么只和棋子的初始位置有关,因为马的可动范围太大了,一个车只能限制棋盘上的一角。
和队友确认后我开始写代码:暴力枚举马所有初始可动方向是否都被车吃。30 分钟完成并提交,但——WA😭😭😭
我一个人开始疯狂 debug,却找不到问题。连续 WA 两发后愈发慌张。左右队伍也没过第二题,这才稍稍稳住情绪继续查。此时单开的队友,发现了A题的解法,于是马上换人。
但二十分钟后他们也连续 WA,A 的通过率又极低,只能退回 K 题。
于是另一个队友接手 K,一交还是 WA。时间过了 1h30min,队里所有人都慌了。理论我们都确认了好几遍,但每个人实现都莫名写不对。想换 E、F 或 G,但 K 卡着心里难受,就是想先把它过掉。
于是我们开始对拍——但全队都用同一思路,根本拍不出差异。队友还提出,要不暴力 100 步算了?数据不大。尝试无果。
午饭时间到了,我们仍卡在 K。
过近1小时F题想到思路,维护一个并查集作为记录权(1<<12)范围内u和v的连通(dfs),查找的话,从高位到低位枚举每个数如果uv有相同的父节点则返回。理论上没问题,但代码实现细节太多,样例都过不了。队友再换人,我继续 debug,但依然失败。
比赛仅剩 1.5h,队友的 K 又有新想法,交——还是 WA。我们开始怀疑思路,但反证证明它确实对的😫。
封榜时排名 330,不过 K 就真的要垫底了。我们又继续 debug K。此时另一位队友看到G已经有了完善的思路,于是开始手写伪代码,想让我打完,最后20分钟,大屏幕的倒计时,队友在旁边催促和指导,对于他这个思路我总有点不放心,又开始了思考一点写一点的龟速coding。最后还是没能写完。最终只过一题……倒数
jiangly他们队讲题时,发现我们对K、F、G的思路都是对的,终究还是debug以及代码实现能力太差。
总结
南京站让我们意识到:我们确实太菜了。尤其袋鼠站偏图论、树、思维模拟,如果换成数论或构造,我们说不定还更有把握。
看着自己 atc / cf / 牛客 rating 长期横盘,加入 ACM 集训队都快一年了,却始终感觉自己的进步十分缓慢。到底问题在哪?水题切多了,还是不愿意补题、写题解和啃书?

想到明年初可能要参加一生一芯,回到计算机与电子交叉的赛道,做做 数字IC。过去一年里,除了在GitHub给logisim提交过一些代码,其余似乎毫无亮点。我该何去何从?

后记
你猜猜我K题卡了近5h的bug是什么?
我在回程列车上仍不甘心,一直回忆代码。直到第二天才发现:
界限又写错了!……o(TヘTo)
原本写成了:
1 | int limyu=1, limyd=10; |


