Placeholder(一):七年半载 ICPC 生涯怪谈

各位好久不见。这里是 lucas110550。

现在是 2022 年的年末,普村的夜晚静静笼罩着我。

啊,距离我从高中毕业已经有七年半载有余了。回忆起一路走来,从高中竞赛生到一般大学生,再奇迹般的上了前途未卜的 Ph.D. 的车,如今也快要下车了。一路的风光与苦难,大多都只有自己知道。

如今,Ph.D. 的第四年并不顺意,甚至可以说是黑暗的一年,却也慢慢的迎来了一丝曙光。在这新旧年交替的时刻,我也总算是下定了决心,以 “十年磨一剑” 为大致主旨,开始把这几年经历的事情记录下来。整体大概分为好几个部分,鉴于很多路线都尚未结束,便决定以目前已经完结的 ICPC 生涯开始写起,作为 2023 新年的一份礼物献给大家,也献给自己。

为了不提及具体的人名地名,以下均以字母简写的方式,用小说的口吻予以展现这七年多来在 ICPC 路上的点滴。情节均为虚构,如有雷同,请勿当真。

2015-2016

待填坑

2016-2017

待填坑

2017-2018

待填坑

2018-2019

待填坑(虽然这一段也没什么好说的)

2019-2020

Y 君刚刚整理完从 SJ 毕业的心情,就开始在思考接下来是否要继续保持对于 ICPC 的兴趣。大四的下半年本应是好好收拾心情,制定未来计划的一年,却因为 U 校导师项目,毕业设计,外接实习的三重原因过的浑浑噩噩,并出现了十分严重的身体和心理状况。在甚至没有确定好来 U 校后是否能够正常生活的情况下,Y 君完全没有任何心思来考虑新赛季的打算。

当然,在大四的下半年,Y 君也开始接触并了解了 NA ICPC 的相关制度,以及 U 校所处区域的难度。18-19 赛季及之前的 NA ICPC 规则和 Y 君本科所在的 EC 赛区并不一样。整个 NA 赛区会被分成若干个区域,每个学校则会被划分到对应的区域进行比赛,所以并不存在跨区参赛的可能。区域的划分也颇有意思,比如 Y 君即将去的 U 校和相隔很近的 P 校 却并不在一个区域,而看似很远的 CA 和 US 地区的学校却有被划在同一个区块里。

每个区域的比赛则是独立命题,且题目难度,竞争激烈程度相差极大。Y 君在大四下的空暇大概感受了一下不同区域赛的难度:比如最简单的 RM 赛区,Y 君 solo 的情况下一个半小时就能 AK - 但现场榜单却鲜有 AK 的队伍。难度较大的 ECNA 则是花了 Y 君不少的时间都未能把题补完,榜单却会呈现典型的一超多强局面(W 校通常都在最前面)。幸运的是,Y 君所前往的 U 校所在的 MC 赛区,似乎难度上偏低(其实已经是倒数了)却强校极少:只有 U 校和 C 校两巨头的内部竞争。该赛区的上一次非两巨头的冠军 NW 也有着 SJ 毕业学长的身影。

而 Y 君最关心的区域赛出线规则也十分简单:每个赛区会有不定量的通往 WF 的 slots。MC 赛区一般有 1-2 个,基本也就是 U 校和 C 校 去拼抢:于是校内出线也就成了最大的问题。虽然 U 校一直被认为是 ICPC 弱校,但校内出线也绝非易事:18-19 赛季的 U 校在 MC 赛区的校内拼抢极为激烈,SJ 出身的 HM 学长+ YQ 学姐的队伍也以罚时之差被拿走了出线的名额。而在前期一度领先一骑绝尘的 U 校本科生队伍也堪堪第四。而这两支队伍很明显都会保留之前的建制再战一年。

Y 君先是 solo vp 了一下 15-18 年的 MC 赛区的题目,结果却也好坏参半:除了 15 18 踩了现场的队伍登顶了之外,16 17 的表现都并不足够好。而 vp 了前几年校选的题目之后,更加加重了心中的担忧:18 MC #4 的队员 YH 和 #1 的队员 LD 全程压制着 Y 君的 vp 表现。当时 Y 君的想法本来是想带着在实习期间认识的 SP 一起去 WF 的:SP 有很不错的天分,只教了很短的时间就能够举一反三做出一些 Y 君都很头疼的构造和贪心题。但 SP 的最大问题是基础太差,且没有接受过系统性训练导致很多常规题都会被困很久 - 这也为之后的校选埋下了祸根。Y 君意识到靠自己小代实力似乎并无法在 MC 赛区畅游,加上同校的强手 S 君似乎也有着 ICPC 的打算,更加重了他的思想包袱。

进入 U 校之后,很快通过一些渠道了解到了当地的 ICPC 组织,也即 IPL。IPL 是由 SJ 学长 B 君发起,目前由学生组织的算法竞赛组织,每周二的晚上会有一些 CF 上的 MashUp 和讲解。本着提前接触并认识些潜在队友的目的,Y 君从第一次 meeting 起就参加了该组织,并认识了当届的组织者,YH 和 ZH,也就是 18-19 赛季 MC 赛区 #4 队伍的主力。每周的比赛的最后一题都挺有挑战,一般都是一些 2300~2600 左右的 CF 题,Y 君做出来的次数也并不多。但最后的排名都很单一:Y 君完全找不到任何水平 even close 的潜在队友。Y 君一直在琢磨着,他加上想一起打的 SP,怎么都还差个人:组织者 ZH 和 YH 似乎也是二缺一,而去年的 SJ 队伍中的 HM 和新来 U 校的 S 君似乎也是个二缺一。天呐,这样就有三支水平很顶的队伍了。Y 君尝试去问了同实验室的 L 君,同时也是去年 SJ HM+YQ 队伍的第三人,高中信竞选手,似乎有了一起打的打算。同样还有水平超群的 XXX 选手,但他因去 WF 会消耗大量精力准备为由也谢绝了邀请。

在队友都完全没有确定的情况下,第一次校选就悄然而至了。U 校这边的校选一般分为两轮:一轮是个权重较低的摸底,由往年其他区的原题拼凑而成;二轮是直接用北美选拔赛 NAQ 的成绩作为参考。一般情况下每年会选两轮总和前 15 的选手,按照意愿分为五支队伍参加 MC 赛区的比赛。

Y 君第一轮的表现只能说差强人意,在前期极快的情况下,最后卡在了一道需要优化的 2048 类似的模拟题上,被 ZH 和 YH 踩题击败。而 SP 的发挥只能说惨烈来形容,让 Y 君十分绝望。在第一轮中,排在第四位的是来自 USACO 的 finalist C 君,而第五位的是来自新加坡的 APIO 女国手 ES。他们的发挥都相当出色,不禁让 Y 君怀疑这是不是史上 U 校最强的一届。

而到了第二轮 NAQ 的时候,Y 君的发挥也只能用惨烈来形容。从前期开始就一直被 YH 和 ZH 压着打,尽管在中期依靠罚时再次登顶,但这次卡在了一道中等难度的 DP 上,硬生生的被第一名的 YH 踩了两个题。更加绝望的是,第一轮中排在第五位的 ES 也继续了第一轮出色的发挥排在了第三,而 SP 似乎被挤出了前十五。两方面的因素让 Y 君第一次有了要不要放弃这一年的想法。赛后的组队也草草收场:slack 上简单聊了聊就接受了和 YH 以及 ZH 组队的邀请。而去年的 MC 赛区的 SJ 队伍接纳了 SJ 同届的 S 君 完成最后一块拼图。APIO 女国手 ES 也和心仪的 jason 组成了一队。USACO Finalist C 君则组成了另外一队。U 校的 A B C D 队一出,感觉实力上都有的打 - Y 君似乎认为基本达到了本科 SJ 试组队时期的质量。但通往 WF 的门票又只有一张:Y 君似乎意识到,一个月之后的 MC 区域赛似乎是一场血战。

选拔赛过后,距离 MC 区域赛就只有差不多一个月的时间了。每年 NA ICPC 官方都会准备好几套 NA Practice 系列的比赛,让每个学校的队伍自愿参加当成区域赛的热身。这些比赛通常由往年的 ICPC 比赛组成,难易度也不一。Y 君所加入的 U 校 A 队虽然看上去纸面实力很强,但模拟赛的成绩却让 Y 君忧心忡忡:先是在 17-18 赛季的 GNY 区域赛 vp 中,输给了当时的由三位 SJ 学长学姐组成的队伍。接着在 18 的新加坡区域赛 vp 中,被 SJ 学弟组成的队伍在现场榜单上踩了两三题。Y 君偶然中获知,本科时期 ICPC 集训队的 X 君也有今年代表 CU 校参加 WF 的意向,并组成了带 IOI 金牌选手实力强劲的队伍。尽管并不在同一个赛区从而不存在名额的竞争,在之后的某场 NA Practice 训练赛中,Y 君所在的队伍也被 X 君的队伍以罚时再次击败。那段时间 Y 君也陷入了深深的自我怀疑:毕竟连着训练赛被各个学校压着打并不是一件很舒服的事情。

另一方面,校内统一训练的成绩让 Y 君有了不少的担忧。C 队和 B 队不太怎么出现的情况下,Y 君所在的 A 队和以 SJ 队员 HM 和 S 君为建制的 D 队打得十分焦灼。更让 Y 君没想到的是,E 队作为纸面实力绝对弱了好几档的队伍,却也在 HX 队长的带领下时常打出超频的表现。时间慢慢的推移,Y 君所在的队伍却连一次 vp 现场赛的登顶都没有过。这也许是磨合不够的问题:当时队内的战术也就是三人各自为战,谁有题就上,根本谈不上什么配合。这和 Y 君本科 SJ 的模式 - 队长不写题,队友合理分配题目的战术是截然不同的。

NA 的不同地方的区域赛的时间是错开的 - Y 君所在的 MC 赛区算是最后一批比赛的赛区,这意味着可以用今年早结束的赛区区域赛作为进一步的练习。从这个时候开始,事情就似乎有了转机:除了第一场 vp 的 ECNA 区域赛毫无疑问被 W 校压着打之外,后面的 NA Practice #3,RM,SCUSA 全部轻松登顶,部分 vp 甚至只有 Y 君和 YH 两个人参与。Y 君并不知道发生了什么,但隐隐感觉到之前经常烂在手里的题越来越少,后面的几场所有有想法的题都能很干净的出完。这段时间的个人练习 Y 君也缓慢但持续的进行着,几场 CF 下来让 Y 君觉得恢复了巅峰时期 80% 的状态。就在一切都在往好的方面进行的时候,远在 CU 校的 X 君那边却传来了噩耗:绝对是 GNY 夺冠最大热门的 CU 校队在领跑了几乎全场的情况下,被 299min 来自康村的一发提交绝杀。另一方面 Y 君的队友 ZH 和 YH 却也有着去年 MC 区域赛领跑大半场在后期被翻的梦魇。Y 君也不禁开始担心,即使前期有着巨大的优势,队伍的实力能够足以撑完后期吗?Y 君本科时期的队伍几乎都是前中期队伍,有着在 SH 赛区两小时登顶 AFK 最后滑到金尾的魔幻经历。另一方面是,Y 君的性格也颇为急躁,很多时候 vp 和现场完全是两个状态 - 如此良好的 vp 训练状态真的能够持续到现场赛吗?

MC 区域赛比赛日当天,已是 11 月初的 U 校气温骤降。MC 赛区的另一巨头,C 校的队伍们也来到了 U 校一起参加比赛。Y 君简单的了解到,去年的 MC 赛区 #2 的 C 校最强队,在经历了明显是补强的换人后,也来到了今年的 MC 赛区决定和 U 校一决高下。今年的 NA ICPC 的规则和往年都不一样,每个区域赛只有冠军能够拿到 WF 的直通票。剩下的头部队伍需要去参加一个叫 NAC 的总决赛,类似于 EC 赛区的 EC-FINAL。非冠军们需要在 NAC 中决出最后的 WF 名额。Y 君认为,如果在 MC 区域赛中无法夺冠,从而被迫参加 NAC 的话,进入 WF 的概率就会大减。MC 赛区本身就属于弱赛区,其头部队伍进入 NAC 拿到 WF 名额的难度无异于登天。

正式比赛的竞争程度完全达到了 Y 君的预期:开场 Y 君所在的 A 队就接连犯错,前三道签到题三个人各错一次,算是奠定了失败的开端。ES 和 jason 所在的 B 队则是兼顾了速度和准确率,开场就排在了最前面。ZH 给了 Y 君 F 题,是个很经典的分层最短路的题目。32 min 1Y 了 F 后,队友 YH 完成了这场比赛风向的第一次转折点:63min 偷掉了一道中期 dp 题 K。K 在 YH 提交的时候遇到了 kattis 的 judge error,从而很长一段时间完全没有人意识到 K 已经被过掉了。之后的过程都非常顺利:YH 接盘了 Y 君并不擅长的开车题 C,Y 君则转向写掉了几何题 D。在一连串行云流水的 no dirt 过题后,Y 君所在的 A 队很快来到了 9 题。自认为感觉很棒的 Y 君似乎觉得冠军杯已经在手上了。

1Y 了第九题 J 后,Y 君自然的刷新了一下榜单,发现事情并不简单。9 题的队伍赫然有两只,分别是来自同校的 D 队,和 Y 君所在的 A 队。C 校的一队也以 8 题紧跟其后。令人冒汗的是,A 队和 D 队的罚时此时仅仅相差 1min。天呐,1min 的微弱优势根本不够看,何况还剩下三道题目需要来决一胜负。Y 君听到就坐在后一排的 D 队似乎也发现了榜单的焦灼:他们似乎也认为自己的节奏足够完美,却出现了这种出乎意料的情况。剩下的 B E G 中,B 完全没有思路,E 似乎 ZH 和 YH 已经有了思路,而 G 始终让 Y 君有着莫名的感觉,似乎在哪里见过。

Y 君开始在 B 和 G 中反复横跳:G 是 F 的变题,大概是找到一条最短路包含七种不同的颜色。F 中总共颜色数量也最多只有七种,所以简单的状态压缩就足够通过了。G 中颜色数则是达到了 1000,明显无法压缩状态通过此题。Y 君回忆了一下什么时候见过这种题目,似乎是大二的某次晚间讨论,SJ 的 HY 学长说起了怎么找到五彩环的方法:随机一下就好了!Y 君很快顺着随机的思路想了下去,和 ZH 讨论后,发现 G 居然就能做了。E 的话 ZH 和 YH 已经有了具体的思路,很快就可以开始写了。呼,这样一切顺利了起来,Y 君这样想着。

G 和 E 的实现也出乎意料的顺利,在 200min 前依次 1Y 了这两题。D 队和 C 校的一队却毫无动静,仍然维持在了 9 题。Y 君有些松了口气,看起来之后其他队 AK 才能被翻盘了。但 ZH 和 YH 仍然神色十分凝重:去年的前期领跑被翻看起来明显让他们后怕。于是全队开始 all in B,一起想弄出个靠谱的做法来。

大家一起想了不到 5 min,发现 B 的题意 Y 君完全读错了。题目从图变成了树,难度很明显降了一个数量级。讨论期间,一个个过于简单的算法被提出,再被否决,再被提出。最后得到了一个看起来明显有些 over-complicated,但正确性却十分明显的算法。Y 君和 YH 有意让 ZH 完成最后的实现和绝杀,ZH 却有些犹豫不前。Y 君十分理解此时的这份感受:在关键的时刻敢完成最后的操作的勇气,不是有限次的比赛就能训练出来的。在 Y 君本科时期的新加坡赛区比赛中,Y 君也出现了最后时刻手发抖的情况。综合讨论了一下,YH 愿意承担起了最后一棒的责任,并很快开始实现 B 题的算法。

B 题虽然说起来稍微有些麻烦,实现却出奇的比较简单。Y 君已经不太记得当时的具体场景,但在 280min 提交后经过了漫长的等待,显示了 AC 的那一刻 Y 君不受控制的大吼了一声。这一个 AC 让 Y 君拿到了生涯的第一个冠军,也意味着获得了通往莫斯科的机票。那一刻的兴奋,让 Y 君回味至今。

2020-2021

2021-2022