刘恒熙IOI2025参赛总结IOI2025参赛总结2025-09-20 09:25:51

 
 

很荣幸能作为中国队的一员参加第 37 届国际信息学奥林匹克竞赛 (IOI2025)

这次比赛在玻利维亚的苏克雷举行,去程从北京出发,经马德里、圣克鲁斯转机,全程耗时 51 小时,其中一半时间都在飞机上度过。特别感谢领队、副领队和观察员老师一路上给予我们的帮助与支持。不幸的是,在飞往马德里的航班上我感冒了,这严重影响了我接下来三天的状态,好在没有影响到比赛。在此提醒未来的选手,比赛期间一定要格外注意身体。

当地时间 7 27 日早上,我们顺利抵达 Villa Bolivariana(选手宿舍)完成了注册。选手宿舍的住宿条件虽与国内存在一定差距,但整体能够满足参赛期间的基本需求。入住后,我们到大堂与外国选手交流。我们遇到了澳大利亚队,他们热衷于偷偷在我们衣服背后别上考拉玩偶,这增添了不少乐趣。我们交流了两队的情况,令我没有想到的是,他们竟然都会玩《三国杀》。之后,大家就玩起了《三国杀》。虽然我不太懂规则只能在旁边观看,但依然能深切感受到两国选手之间建立的友谊。

下午,和我们同住的多米尼加共和国队也到了寝室。他们热情地询问了我们每个人的名字,并反复练习发音;我们也学习了他们的名字。

第二天安排了练习赛和开幕式。练习赛入场前,我们和韩国选手交流了赛前训练情况,他们说 CTS 的题目难度很高。练习赛期间,多米尼加共和国队的选手问我第三题的解法,我尽力解释了我的思路,可惜没能使他们理解。

前往开幕式场地前,我们曾对场地的实际条件存在一定疑问。但刚下大巴车,主办方的热情就扑面而来:场地外就有玻利维亚特色表演欢迎我们。开幕式上我们了解到,本届 IOI 正值玻利维亚建国两百周年庆典,因此他们格外重视。玻利维亚总统表示,这次 IOI 对玻利维亚来说是历史性事件。除了讲话和表演,开幕式上还有欢迎各代表队的环节,现场充满了掌声和欢呼声。我为每一个代表队都送上了掌声,因为现场的每一位选手都代表着自己的国家(或地区)来争取荣誉,而且对大多数选手来说,来玻利维亚比赛很不容易。开幕式接近尾声时,本届 IOI 的主题曲响彻会场,选手们纷纷随着音乐挥手,我也沉醉在这欢乐的氛围中。这时我的感冒还没完全好,但这场盛会仿佛带走了大半病痛。

第三天是 City Tour,我们领略了当地风光,了解了玻利维亚的历史。苏克雷的建筑大多是白色的,导游说苏克雷因此被称作 White City”。导游还为我们讲述了当地历史,带我们参观了玻利维亚民族英雄的雕像和画像。

city-tour

Day1 比赛当天早上,我欣喜地发现自己几乎完全康复了。虽然前一天只睡了 5 个小时,但比赛的紧张感让我毫无困意。入场时,离比赛开始还有 30 分钟。我设想了各种情形,提醒自己要采取稳妥的策略。比赛开始前最后 10 分钟,我看着倒计时一点点减少,数着深呼吸让自己冷静下来。

day1(涉及题目解法,建议要做 day1 的题的读者跳过这段)

Task

Name

Score

Time

1

Souvenirs

100

X XXXX (-104min)

2

Triple Peaks

100

XXXXXXX XX (-104min)

3

World Map

100

X XXXXX XXXX (-104min)

倒计时归零,我立刻打开三道题的题面。读完三道题,我发现 Triple Peaks 的前 70 分相对传统,于是决定先做这部分。通过分类讨论,我发现只有一种情况比较棘手。对条件的等式进行一系列转化后,我意识到三元组本质上对应着三元环。我花了半个小时写完了这个做法,获得了 70 分。接下来我开始思考剩下 30 分的构造:最大化三元组的数量。由于只有与三元环等价的三元组的数量是 O(n1.5) 的(其余类型都是 O(n) 的),我决定只最大化这类三元组的数量。在一般图上,固定边数 m,要最大化三元环的数量只需要构造一个包含 O(m0.5) 个点的完全图。但在本题中,我不知道如何确定节点对应原题中的下标。既然是提交答案题,我就直接尝试随机下标。经过一些调参,我先后获得了 96.83, 96.88 分。这个分数已经接近满分,所以我把重心转向了另外两题。

考虑到 World Map 的构造细节可能会较为繁琐(后来发现还好),我选择先做 Souvenirs。看了看时间还充裕,我决定直接尝试 100 分。观察 n = 2,3 的情况后,我发现这题的正解很可能需要用除法,让之前从未成为最大值的元素成为本次购买的最大值。继续思考了约 15 分钟,我找到了解法。它出乎意料地简洁,这让我一度怀疑它是错的。检查后没发现问题,我便怀着忐忑的心情开始写代码。提交后看到 100 分,才放下心来。

接下来我开始思考 World Map 一题。我注意到由染色方案生成的图总是连通的,因此难点在于确保不该相邻的颜色确实不相邻。经过约 20 分钟的思考,我得到了一个基于 dfs 树的、k=4n 的构造:每个子树可以用 4 倍子树大小的正方形区域表示。这个构造不难实现,为了先拿分并确认理解无误,我写了一遍代码,获得了 72 分。输入 K9 得到 k=36 的网格图后,我发现图中有很多冗余。通过减少冗余,我很快得到了 86 分的 k=3n 的做法。这时我的得分是 100 + 96.88 + 86,显然继续做 World Map 是更明智的选择。但是我一时没能想出正解,只能转而尝试 Triple Peaks。我原来的程序在 3 组规模较大的数据上获得了满分,在较小的 3 组中,除了最小的 1 组,得分都超过 80%,所以我认为通过更换随机种子,很有希望拿满分。我用这种方法在几分钟内就把分数提升到了 99.91,只在第 2 组数据少了 0.09 分。看到我的程序在第 2 组数据上迟迟跑不出解,我决定修改一些参数来加速求解。有趣的是,就在我编译新程序的瞬间,旧程序竟然跑出了结果。

只剩最后 14 分了,时间还有两个多小时,但我还不能松懈。我放弃了基于子矩形的构造,开始寻找从左向右的构造。因为原构造在对角线上是欧拉序,我在最左边的一列放上了欧拉序,而接下来的构造我却毫无头绪。我大胆猜想可以直接贪心地构造,并粗略估算每条非树边平均占用面积只有 2。我抱着碰运气的心态,实现了该构造,最后幸运地获得了 100 分。虽然我已经很困了,为了避免影响生物钟导致 day2 时更困,剩下的时间里我也没有睡觉。

出场后,陈昕阳告诉了我 World Map 一题更简洁的构造。

回想这一天,我感觉自己实在幸运:能发现 Triple Peaks 的三元环本质、Souvenirs 的除法解法以及 World Map 的贪心构造,或许很大程度上是随机因素帮了忙。

两个比赛日之间,我们去参观了 Glorieta Castle。这次的导游英语带点口音,而且声音比较轻,我基本上没听懂什么。

Day2 入场后,我感觉自己有点过于放松了。我试着想象比赛场景让自己像 Day1 前那样紧张起来,但效果不大。

day2(涉及题目解法,建议要做 day2 的题的读者跳过这段)

Task

Name

Score

Time

4

Festival

100

XXXXX

5

Migrations

91.23

X XXXXXXXXXXXXXXX....

6

Obstacles for a Llama

100

X XXXXXXX

看完 Festival,我马上想到了如果需要买完 n 个物品(即子任务 5)应该怎么做。我把三道题都看完后马上写了这个做法,获得了 32 分。从 ti4 入手,我只会做到 ti2。我试着把物品分成三部分:取了不会减少代币的、取了会减少代币的、ti=1 的,子任务 6 的存在印证了这可能是正确的一步。通过把买物品对代币造成的影响视作在数轴上拉伸 ti 倍,我观察到第二部分的物品至多取 log A 个。利用这个结论,我很快写出了一个动态规划做法,通过了此题。

day1 一样,我先尝试传统题 Obstacles for a Llama,这题与 NOIP2023 T3 的模型类似,直接套用相似的思路就可以获得 83 分。之后我发现了一个性质:从 x 出发时(不妨设 x<y),只需要考虑 l 的限制,反之亦然。有了这个性质,再经过约 10 分钟的思考,我得到了一个倍增做法。代码出了几个小错,但没浪费太多时间就调试通过了。

Migrations 看起来很难,因为无法在每次直径改变时直接传递新的直径。我想了一会儿子任务 1,发现了可以先花 7 个位置传递前面的端点,再花 7 个位置传递最后 14 个位置分别是否改变直径(每个位置传 2 bit)。经过半个小时的思考、打表优化,我得到了一个复杂的做法:分 4 段传输信息,每段信息经过两层编码,而且最后一段还要特殊处理。更关键的是,这是一道通信题,我需要把整个算法分别以编码、解码的形式实现两遍。结合这些因素,我估计要一个小时才能写完。我现在的总分是 500 分,拿金牌肯定没问题;如果我只拿 30 分,大概率会有人总分超过我。还剩 2 小时 20 分钟左右,我决定冒险直接写高分做法。保住冠军的决心让我最终战胜了一小时的煎熬,我在 3:34:15 获得了 89.49 分。我发现我的算法在第 30 个测试点才取到得分的最小值,所以在算法里加入了随机化,这能使我的算法至多在 32.8% 的情况下被卡到最大值。但是数据足够强,我之后几次提交均没有获得更高分。算了算总分,只要再把次数优化 2,就能确保总分高于所有外国选手。针对两段交界处进行优化,我把次数减小了 1。最后 40 分钟,我一直想着再优化 1,但最终未能成功。

临走前,加拿大队的 Ryan Bai 来加了我们的微信,这几天我们交流了很多。回国后,多米尼加共和国队的选手也通过微信联系了我们。

坐在离开的大巴车上,我意识到自己参加过最重要的一场比赛已经落幕了。我克服了海拔、时差、疾病、饮食等重重困难,最终取得了理想的成绩。这真是一次无比特别的参赛体验。正如往届选手所说,IOI 是很“好玩”的。比赛之外,我们游览了不少景点,也认识了不少外国选手。室友叫我的 Hengxi”,guide 称呼我们的 boys”,赛前播报的 Do not touch the machine.”,都成了美好的回忆。

souvenirs

1. guide 送给我们的纪念品。2. 中国台湾选手送给我们的纪念品。

衷心感谢 CCF 为我们提供的机会。感谢领队、副领队、观察员、三位队友,以及我的教练和同学们。没有你们,我不可能取得这样的成绩。

告别 OI,我将带着 OI 赋予我的知识和勇气,去追寻更远大的目标。