那又 怎样 / NOI 2026 游记

· · 生活·游记

飞机正在青岛的上空降落。它穿过层云,滴答、滴答,那是积雨云。

这里的夏天真凉快。眼中忽然映出去年 NOI 的场景,那是绍兴炽热的盛夏,烈日当空,虽然高温,却也别有风趣。

时间真是神奇的东西,转眼间便偷偷从我的身边溜走,悄无声息。胶东机场上方看不见太阳,提醒着我,物是人非,故人总会离去,新人总会亮相。

在时间的眼里,我也不过一位过客。给我一个机会享受当下,让我前往 NOI 的竞技场吧。

嗯,我来了。

NOI 前的模拟赛打得不怎么样,有一天甚至没有做出人均过的 T1。可我想,也不必慌张,我应该相信,自己能在正赛发挥出应有的水平……吗?

曾经或许我能轻易就相信自己。但是 NOIP2025 给了我致命的打击。那场比赛中,我的心态在赛中就掉到了零——哪怕其实我过了 sale——在比赛的最后,我没能写出任何代码来。那是噩梦。

但是,我对自己说,现在的我会走出困境。哪怕我还不够强大。

CYYZ 的校园和我参加冬令营时的印象差不多,熟门熟路的感觉真好。上次 NOI 还是初次登场,这次我已是熟人了。

练习赛的题目是 WC2026。三道交互题,曾经的 binary 96\text{pts} 与差 <4\text{pts} 就能够到的铜牌,此刻都付之一笑。笔试顺利地没有挂分。

还有一天就是 NOI Day 1 了。充满了自信。

开始吧。以下 \texttt{h:mm} 表示比赛开始后 \texttt{h} 小时 \texttt{mm} 分钟。

SelfEval 这次真的准确吗?别挂分哇。

比赛开始时我就把三题总览了一遍。这时我已经会了 T3 的 10\text{pts},并得知了 T2 的一些性质。

在 1:40 时我写出了 T2 的平方暴力,此时得到 140\text{pts}。剩下的部分大概是数据结构,我感觉这是顺风局。

然而继续做 30min 却无果。我用二分将问题转化为距离 \le k 的邻域询问,却发现不会做。很可惜我没有想到点分治,而是第一时刻叫出了 Top Tree。

但是我不会 Top Tree。

可能还可以观察性质吗?

于是我决定先做 T3。写完了第一个测试点的分数,交到 SelfEval 得到 15\text{pts}10+1+3

欸欸??

我揉了揉眼睛,随后举起了红牌。

「以你自己算出的分数为准。」

啊,不就是算分数时取整的位置错了吗。

然后我发现测试点一的做法可以拓展,在候选数集合为 S 时可以用一次大小为 |S| 的询问确定答案。因此前 3 次询问是用来缩小范围的,第 4 次询问则确定答案。

看到 \gcd 后我试着第一次询问 [2^7\times 3^3],但是效果不好。观察到测试点二的性质,答案是质数。我发现大质数只会制造 \gcd=1,无法区分不同的质数,所以需要二分状物。

然后我手搓了第一次询问的集合。具体的数我记不清了,只记得开头是 [210,420,660,880],后面还有 1435,2299,大概就是相邻两个数 \gcd 不小,但互不一样。第二次询问就用 [2^7\times 3^3],第三次询问直接出答案。

这个做法居然得到了 53\text{pts},我大喜过望。进行一些调参后(过程中出现了一次死机,贡献了第二次红牌),分数来到了 100+40+62,已经过了 200。这时还没到 3:00。

我尝试继续凹 T3,但是凹不动了,遂回到 T2。

发现脑海里循环播放着《夏天还不算开始》,多想拼劲全力向前冲呀。

还没开始,还有两个小时,还能更好。

继续胡了半小时 Top Tree 却没有头绪。挖掘性质,发现原来要找到 k,使以 y_i 为根去除 x_i 子树后,y_i 附近的距离 \le 1,2,\dots,k 的邻域大小和 \ge n,而使 k 最小。补过摩卡串的我立刻意识到 k=O(\sqrt n),因而可以暴力一点做。

还记得省选场上我胡出了 string 的做法但是没能调完。如果通过了那题,那我就能翻入省队线内。只不过,世间没有那么多「如果」,一件事在一个世界只能有一个结局。那又何妨?一方面来说,即使我上了省队线,也是 E 类,又不是正式选手。另一方面来说,至少我冲刺过。

于是我开始写 T2。着急了,第一次写出了假的复杂度。还有半小时,紧急改。发现空间居然要带根号,那只能过 10^5 了。至少有 75\text{pts},我是否该满足了?

SelfEval 上显示着 100+75+62=237。最后的时刻,让我再凹一下 T3。

询问次数 90\to 84,测试点三 40\to 41,得分 \color{red}62\to 62

欸欸????

定睛一看,前面那次 SelfEval 的评测居然是 10+11+40=62,笑了。

于是 Day 1 就结束了。后来查分,没有挂分。

出场时的感觉,好累,好累,耗尽了体力。食品和水在前 4 小时用完了,最后的时间很艰难,需要和疲劳作战。

突然有一种精力大不如从前的感受。似乎人们其实都在老去。

想来我的 OI 路从六年级开始,那现在已经走完了大半。或许在 OI 的圈子里我也不算年轻了。但也不必抱怨。

我需要为 Day 2 蓄力。

社会实践活动时走了很多路,似乎反而费了精力,于是下午彻底地休息了。

期间还得知 Day 1 的队线可能很高。我想,我都能打到 230+,那 Day 1 肯定不算难,因此 Day 2 一定会很难,可能是一个 T2 两个 T3……

「不然就要有选手 AK 了吧!」

这个预言埋下了伏笔。

反正我也是非正式选手,不如 Day 2 打得激进一点。管它题目多难呢。

于是 Day 2 悄无声息地到来了。

T1 的二分转 0/1 Trick 很经典,接下来直接 DP,优化后可以做到 O(nk) 一次 DP,不能过,分数倒不少。接下来我注意到,在 1 的个数足够的情况下,二分判定的结果为真的概率不小,除非……于是我写出了一个十几步的分类讨论,复杂度是 O(n) 的。

要过了?刚开始写,突然意识到前面的分讨只对 k 为偶数生效。有点晕,有一点点慌。此时,一个多小时转眼过去了。

对原先的分类讨论做一点拓展,改成一个线性 DP,似乎就可以应付奇数 k 了。又是刚开始写,发现 k=2,3 似乎也不对。

这时我终于确定了部分分中 k=2,3,5k>5 的有效性。先把线性 DP 写出来,发现果然过了 k>5。拼上了 O(nk) 的 DP 后整题就通过了,但是我根本不确定这个算法是否正确。

已经 2:15 了。

别担忧了,相信自己,直接往后看吧!

开 T2,看见 Prufer 序列时,心中「咯噔」一声——不熟悉。读完题,花了 15min 胡出了通过 Prufer 还原树的线性做法,写完后顺利获得了 20\text{pts}。此时 2:45。

接下来还是数据结构的事,有机会了!但是我的暴力 O(nm) 写的并不好,因此难以优化。有些着急,想补充能量,却发现食品已经吃完了,水还有小半瓶。

好累。好累。

想了半个多小时,还是没有头绪。感觉不太妙。发现脑海里循环播放着《零重祈愿》,怎么感到,有点抑郁……

「激进一点。」

我做出了惊人的决定——放弃 T2,冲刺 T3——正解。

还有 90 分钟。

我尝试容斥,却发现这题中容斥是错的。

但是我还能直接 DP,我会设计状态。然而转移数至少是 O(n^5)n200。我只能过一点点分数。

让我仔细想想具体转移。怎么优化?有组合模型吗?

好累,好累,晕。喝一口水,继续想。

「冲。」

……

战斗到最后一刻,还是失败了。我没有花时间写暴力。100+20+0=120,结束了。

休息吧。

我知道自己的分数,100+237+120=457,稳 Ag,不会错。

后来却听说大家的 O(n^5) 都冲过了 T3,让我颇为惊讶。如果我直接写 O(n^5),是不是也能过呢?

虽然在这个世界里,这条「如果」不存在而已。

没关系。没有悲伤,无需遗憾。

其实 T2 也不困难,后来同学给了我一个提示,我很快就会了。如果场上我决定全力拼 T2……可惜吗?——这也不算什么。

很显然,昨天的预言肯定是假了。

晚上的嘉年华,唱歌环节真的很不错。(哦……对,是不是其实也有舞蹈来着,也挺好。)

在和诸位 OIer 相聚的时候,分数其实没多么重要。

最后一天了。

观看《我与 NOI》,发现唱歌环节的众数是洛天依的歌,很好呀!

要离开这里了。越到将要各奔东西的时候,越能体会到时间的涟漪。我终于坐在了闭幕式的会场里。

这时我得知了,Au 的分数线是 \color{gold}557

原来我离 Au 线刚好差了 100\text{pts}

如果我的 Day 2 T3 冲刺成功了呢?如果 O(n^5) 过了……

记忆又被拉回去年的 NOI,炎热的夏天,旷大的体育场里,我颇天真地冲着 Day 1 T3 的 \color{green}100\text{pts}——当然也失败了。或许就差一点,如果灵光一现。

今年,我回来了。纵使一年过去。Day 1,我是掌握三题全局的将领;Day 2,我是冲刺第三题的战士。

哪怕无畏最终仍失败了,至少,我搏过一手,燃烧热烈的心脏。纵使我的 Day 2 只有 120\text{pts}

我虽一身泥浆,那又——怎样?

明年,再战,再战!