联合省选 2025 游寄

· · 生活·游记

前言

虽然是前言,但其实是最后写的,算是个心态总结之类的东西吧。

NOIP 100 + 100 + 40 + 0 = 240。场上冲 T3 没冲出来,没时间写 T4 了,赛后发现场上其他选手 T4 分数全部大于 T3,唐完了。

NOIWC 100 + 56 + 40 = 196。场上冲 T2 拼了一大车部分分,本以为银牌在握,赛后得知 T3 是个签到题,辛辛苦苦拼了一大车 T2 暴力最后被切了 T3 的打爆,唐完了。

总结经验教训,发现没有任何经验教训。每一场我都尽力打出了我所能打出的最好的发挥,却总是因为离奇的原因出现失利,按照王哥的话说,这就是 OI 经典“刮彩票环节”。

想象一下,在一场考试中,你和另一位实力与你相近的选手都轻松切掉了 T1。随后你开始写 T2,他开始写 T3。赛后发现 T3 是签或者有很多好写的部分分,而 T2 是不可做题。最后的结局也是你与那位与你实力相近的选手分数相差甚远。这时候你能说什么?你什么也说不了,只能感叹这就是命。

我不是个被运气所眷顾的人。即使是在迄今为止我最辉煌的一场比赛 NOI2024 中,我的成功也更多来源于我对基础知识的熟练掌握与灵活运用,而非开题顺序之类的纯粹运气因素(当然,题目出得很对我的风格从某种意义上来说也是运气不错的体现,但并非纯粹的运气因素)。

有人说,判断题目难度和好写程度的水平也要归类到选手水平考察的一部分,所以你自己开题顺序劣于别人就要归咎于你自己菜,怨不得运气。可是当大部分选手都不具备判断题目难度和好写程度的水平时,题目乱序排序就注定会导致 OI 考试变成刮彩票。至少我认为,除了国家队选拔级别的考试之外,其他 OI 相关考试都应该严格遵循题目难度单调递增的业内共识:尽量把更简单的或者有更多好写的部分分的题目放在前面,而不是让选手场上刮彩票。

遗憾的是,在联合省选 2025 中,刮彩票的情况仍然存在。更遗憾的是,我再一次没有被运气眷顾。

寒假

从 PKUWC 和 NOIWC 回来之后情绪一直很低落,春节几天低落情绪最甚。

因为高二省选在即,春节期间我甚至没有踏出过家门一步。本来想找人一起卷题,可大家都去开开心心地过节了,只有我每天把自己锁在屋子里写着 lxl 的数据结构。

虽然写数据结构着实振奋人心,但时间一久我也开始感觉很难过。分块固然优美,线段树也颇为有趣,可终究只是停留于屏幕上的数据结构,像镜花水月,终究不能填满我的空虚。

我几乎要把自己逼疯了,最后只好把自己沉浸在卡牌游戏中,在一局局的爬塔之旅中让自己感到麻木,同时祈祷明天快些到来。

但有一说一,杀戮尖塔真的很好玩。我宣布世界上最有趣的三样东西就是数据结构,杀戮尖塔和血染钟楼。沉浸在卡牌游戏中的我总算是熬过了那段煎熬的时间。

不久后就是 KH 和 wind_whisper 两位金牌学长来给我们讲课。2023 年的暑假尚且不会二分答案的我还在和一群小学初中的小朋友一起听 wind_whisper 讲线段树和树状数组这些基础数据结构,现在我已经是高二备战省选的选手了。

这一路走来吃了很多苦,但我仍然觉得 OI 是最能带给我快乐的东西了。我总是觉得,只有在你没有赢的时候仍然能高兴的起来的事情才算真的能给你带来快乐。打 LOL 赢了很高兴,但输游戏的时候会急的面红耳赤甚至破口大骂;文化课考得好很开心,但成绩不尽如人意的时候会失落悲伤感觉前途无望。只有 OI,这一路上我赢过很多次,也输过很多次,但 OI 带给我的快乐是不论输赢的,始终如一。

这段旅程走到最后,我或许拿不到我梦寐以求的金牌,甚至有可能都进不去一次省队。但多年之后,如果有人问我此生最开心的时光,我会回想起凌晨四点的大连,一边调分块一边傻笑的那个 AClove。

应该没过去多久,npy 找我提分手。比起痛苦,或许我更多的是释然。其实这段感情从很早之前就已经名存实亡了。没有出轨,没有背叛,没有争吵,只是一段正常的无疾而终的感情。她不满于我对她的疏于关心,我也疲于应付长久以来她和我观念上的不合。散了也好,省得耽误她,也省得耽误了我。

寒假的最后两天我决定去上学。虽然寒假期间学校对于竞赛生是开放的,但由于不满学校的时间安排,我一直没有去上学,而是在家里自己搞自己的。这次之所以要去上学,其实也只是想回去看看而已。

回去上学对我心态的提升是显著的,这是好的。

Day 0

召集日。

回班了,但感觉不太好。我从上了高中之后就只上过一个星期的文化课,何况中间经历了一次转班。我转入这个班级已经一年了,但上课的天数加起来只有两天。同学们都不认识我,我也对班级没什么归属感。领完书就跑路了。

放学之后和 Nihachu 一起走的,路遇 Liuooo,一时兴起决定去抽一番赏。

一发就抽中了 D 赏,我只能说这就是天命加身!

决定一起去散步,从学校出来走了五公里走到了西安路。

再抽一番赏,结果抽了个 H 赏,大悲,不过就当是为省选攒 RP 了。

去抓娃娃了,好玩捏。

娃娃机的爪子会在你把娃娃抓上去之后松开,非常不牛。不过每松开几次之后就会有一次不会松开。简单地说就是吃到保底了(大雾)。

蹲守在一些没有耐心的小朋友旁边,每次小朋友气馁地跑路之后就去捡漏,好几次都第一下就把娃娃抓上来了,很牛。

然而我也被搞破防了几次,连着抓好几次都没抓上来,愤然离去然后被别人一下子抓走了,这下我也成没有耐心的小朋友了。

哎,这何尝不是抓娃娃乐趣的一部分。

回家之后躺着玩了半天手机,晚上又搬到考场附近去住了,睡得很早。

Day 1

雾很大。

早上出门还是比较早的,结果路上遇到了车祸现场,直接把路堵死了,耽误了好久时间,所以没有跟着大部队一起进场。

雾太大了,在学校里迷路了,找不到考场了,联系教练开了位置共享才摸过去。

不久就进场了。

进了机房发现我,湘湘,Nihachu,yxj,lyq 的位置形成了一个联通块。考试开始前我们几个人兴奋地聊天,极大缓解了紧张的氛围。

我拿出了我买的大颗粒 M 豆,我们五个人每个人吃了一粒。

lyq 考试前上了两趟厕所,疑似肾有点虚。但我也上了两趟,大哥别说二弟了。

考场内充满了快活的空气。

开始考试。先看 T1。

猜性质:所有可能成为中位数的数在值域上是连续的。

很快自己 hack 掉了,因为有的数是不可能出现的。

不过稍微打个补丁:剔除不可能出现的数,所有可能成为中位数的数在值域上是连续的。

因此我们可以直接二分左右端点,然后对于中间的段把不可能出现的数剔除出去就行了。

复杂度大概是 O(n \log n) 之类的,不过因为我用了 map 离散化,好像跑得还是有点慢的。然而我听说省选的评测姬比 NOIP 还快,所以也懒得卡常了。

一个小时切了 T1,心情大好。

然后我就开始刮彩票了,看 T2,被诈骗了,以为是个简单题,于是开始冲 T2 正解。

注意到内存空间很大,我合理猜测这个东西是用 bitset 乱搞。

先后口胡了四个做法。一开始想的是块状链表套 bitset,后来发现可以直接分块,但是分块复杂度看起来很劣,于是换成了树状数组,最后不知道怎么回事拐到了整体二分。

整体二分做法大致就是:对于询问,二分一个 b,把所有大于等于 ba 加入某个数据结构中,然后查询范围内的 a 是否在可达路径上即可。

这东西我到最后都没算明白复杂度,但好像挺对的,脑子一热决定硬冲一把。

开写,不过小样例,开调,过了小样例,过不去大样例,开调,调不出来。

大样例第 1437 行,正确输出是 469,我的输出是 479。一共几千行的输出,我的错误不超过十行,但我就是死活找不到到底是哪出问题了。

此时距离考试结束剩余 30 分钟,我 T2 T3 总共得了 0 分。

草泥马的感觉要退役了。

电光石火之间我再次展现惊人的魄力,直接扔掉了 T2 的那一大坨整体二分,开始拼暴力。凭借惊人的手速,我在 20 分钟内拼完了 T2 的 20 和 T3 的 8。考试结束前最后十分钟我检查了自己的代码,发现我在紧张之中把代码拷错了,幸亏查出来了。

监考员宣布考试结束的话回荡在我的耳畔,我仿佛听到他说的是我的 OI 生涯结束了。

雪猫,湘湘和 lyq 三个人在场上都没有去碰 T2,写了一大车 T3 的部分分,他们的成绩都是 100 + 20 + 52,比我多出足足 44 分。我旁边的老于和我一样是 100 + 20 + 8 的分数,但他已经有了正式银牌,今年纯粹是来玩的。FD 也被 T2 诈骗,只写了 128 分,但他 NOIP 比我高了 100 分,而且他们学校强手没那么多,他不会被卡三分之一。Nihachu 和我分数也差不多,但她是女生,有专门的 A 队名额。

运气差到极点了。如果我场上没去拼 T2 那个该死的不可做题会怎么样呢?如果我场上把 T3 的分数拼满了会怎么样呢?如果我 NOIP 没去死磕 T3 而是去写了 T4 会怎么样呢?如果我不会吃到三分之一会怎么样呢……

因为三分之一政策的存在,如果 Day2 我想要翻盘,必须比他们那些选手多打 40 \sim 50 左右。在省选题目难度逐渐膨胀的今日,这基本是个不可能做到的事情。

进不去省队了,再见了,诸位。

但很快就看开了。我也是银牌在手了,虽然 D 类银牌在升学上没有政策,但以后不管是做教培还是找工作,我的 D 类银牌都足够有含金量了。再者说,我以后可能有出国的打算,国外对你国内的第一学历的重视程度显然不会太大。退一万步讲,以我的 OI 水平,去清北只能做凤尾,但找个其他学校还是很有希望做个鸡头的。上了大学之后打打 XCPC,争取拿个金牌,到时候没准还能成为校 XCPC 史的一段传奇呢。

情绪一下子好起来了。

下午晚上接着摆了,已经做好回去学文化课的准备了。

Day 2

我可能不一定需要回去学文化课了。

湘湘场上被栈空间搞得焦头烂额,忘记在考生文件夹里建子文件夹,导致他的 day1 保龄了。

我不知道我该怎么评价这件事。考虑到我可能是这件事最大的既得利益者,不管我说什么都有得了便宜还卖乖之嫌。所以这里不予评价了。

但我已经没时间去想他的事情了。虽然现在没了三分之一政策的限制,但我 day1 极低的分数仍然导致我的名次在危险线上徘徊。我 day2 还是急需放手一搏打一场翻身仗。

开考前仍然是快活的空气,我再次拿出了 M 豆分给大家,只是今天大家似乎都有心事的样子。

开考。

T1 这个题看起来眼熟,推箱子的设定极其神似某个 AT 的题,我第一眼看过去还以为是出现我做过的原题了。结果那个 AT 题是个 DP,这个题是个数据结构,只能说是八竿子打不着了。

不过这个题思路更加简单。考虑两堆箱子推到一起之后就会合并成一堆,而合并操作均摊来讲只有 O(n) 次。所以我们用个数据结构把合并起来的箱子维护一下即可。

场上先写了线段树,然而写着写着发现极其不好写,于是果断弃掉换了分块。

写完之后过了小样例,发现过不去大样例。这就是分块最恶心人的地方:散块的暴力非常好打,整块的处理很难检查。考虑到大样例根本不可用,我自己写了个 datamaker,造了一些形如这样的数据:

1 2 10000
2 3 10000
3 4 10000
4 5 10000
5 6 10000
……
10000 10001 10000

最后调了半天终于调出来了,真的太艰难了。

此时时间已经过去了两个半小时,剩余两个小时的时间,足够吗?

我不知道够不够,但我知道我必须拼一把了。

于是我完全没思考正解,开始冲 T2 的暴力。

A 性质是 n, m \le 6,考虑一下这个东西怎么做。

很简单,暴力枚举每一条边的状态,然后 check 即可。

但写完之后发现大样例挂了,原来是 check 出问题了。

我不会求最小外向生成树这么个玩意,于是牙一咬,心一狠,再爆搜哪些边可以保留。复杂度大概是 O(4^m2^mnm),我也不知道我是怎么写出这么个东西来的。

B 性质是最小生成树一定唯一,那么只需要枚举这上面的边 check 即可,代码可以直接套用 A 性质的 check,稍加修改即可。

过了两个性质的样例,期望得分 24。但这时候只剩半个小时多一点了,感觉已经无力回天了。

那一瞬间我的脑子里闪过了很多片段。有人说人死的时候会有走马灯,我那时候可能是退役前的走马灯吧。我感觉我的眼前浮现了很多人,很多事,很多东西。然后不知道是不是幻听,我听见我自己在我耳边说:

“你不应该倒在这一步。”

于是我开始冲刺 T3。

首先 n, m \le 10 的性质是好写的,我五分钟就写完了。然而考试结束前最后两分钟我发现我写挂了,被降智了忘了加记忆化被卡爆了,不过这都是后话了。

然后决定殊死一搏拼一把 B 性质,这时距离考试结束还有半个小时。

考虑长度为 1 的序列有几种,假如我们这个序列长这样:

a, b, c, d, e

那么长度为 1 的序列应该从 1e - 1 一共 e - 1 种。

长度为 2 的序列呢?

首先 e 肯定会在序列中,因此在前面选一个即可。

比如可以选出这样的序列:

a - 1, e - 1
b - 1, e - 1
c - 1, e - 1
d - 1, e - 1

然后这些东西还可以继续拆:

e - 1, a - 2
e - 1, b - 2
e - 1, c - 2
e - 1, d - 2
a - 2, e - 2
b - 2, e - 2
c - 2, e - 2
d - 2, e - 2

等等等等,以此类推。

观察到规律:一个长度为 k 的序列可以一直转圈转下去,转一次圈对答案有 k 的贡献,转圈的次数取决于序列的最小值。

枚举最小值和序列长度暴力计算即可。

我自己都不觉得这玩意有正确性。事实上,这个逻辑是无比正确的,但我第一次推出来的式子却是个错得离谱的东西。当我看到我那一大坨乱七八糟的不是正解的输出的时候,我的心凉了半截。

要到此为止了吗?

不行!明明已经拼了那么久,怎么可以倒在这一步!

我重新推式子,一次又一次重新计算,我已经没时间也没耐心用纸笔验证我的式子的正确性了。我直接用我之前写的 n, m \le 10 的暴力对拍。冲刺!冲刺!

当正确答案出现在我的终端中时,我差点从椅子上飞起来。然后我特判了 a_1 = 1 的情况,大样例全过!

最后十分钟,我开始检查我的代码。我把拷贝到选手文件夹里的代码拷贝回了我的个人文件夹,然后重新测了一遍所有的我写了的测试点对应的样例。确保大头没有丢分。

最后的两分钟,我突然意识到我的 T3 的 n, m \le 10 的暴力可能会被卡爆。但没时间了!

我的爆搜没加记忆化,导致重复情况被反复搜索了很多遍。可我在考场大脑短路了,我没想起来记忆化的事情!

现在只能寄希望于数据过水或者评测机速度足够快了,但这个希望是很渺茫的。好在只有 8 分,希望我不会因为这一点倒在这里。

不过考试已经结束,说什么都没用了。尽力了就行了,尽力了就足够了。

出乎我意料的是,我的 day2 还是分数比较高的,场上很多人 T2 都只有 12 分,这倒是出乎了我的意料。而且 T3 的 B 性质最后那一手可以说也算是神来之笔,我是怎么在如此紧张的氛围下如此短的时间里如此快速地想到这个东西应该怎么计数的。

考试结束了,但成绩还没有出,算不上完全的尘埃落定。

可能 A 类进队,可能 B 类进队,可能进不了队。

可能会有遗憾,但已经没关系了。至少我们都有光明的未来。

后记

update:2025 / 03 / 22

最后一名惊险进队。运气很差,运气也很好。

80 + 20 + 8 + 100 + 12 + 28 = 248

没有进队的选手里的第一名省选打了 252 分,好在我的 NOIP 比他高了 24 分,最后以一个很惊险的分差成功保住了省队。

这已经是我挂分的极限了,但凡我多挂一点点分,我就也要黯然离场了。我现在回想起 D2T3 的惊险翻盘都觉得心惊肉跳,又不由得为自己当时在场上的力挽狂澜感慨万千。当然,别问狂澜是怎么来的。

D1T1,注意到左右端点是两个点,点数是 2n,我在场上没开二倍空间,在这里挂了 20 分。

现在回想起来真的觉得我的进队是个奇迹,我是省队所有选手里唯一一位 D1T1 不是 100 分的选手。

好在我 Day1 比完赛没有测自己的代码。假如我真的测了一下发现 D1T1 挂分了,我的心态会有很大波动,Day2 很可能就越打越崩了。

D2T3 没有卡我的不带记忆化不带哈希的搜索真是个奇迹,我在场上自己搓数据都把自己卡掉了。如果真的卡掉了的话,我最后就会以一点点分数和省队擦肩而过,那样的话真的会遗憾终身的。

不过在省选结束相当长的一段时间里,我都是误以为自己没有进省队的。这离不开云斗学院的构式民间榜单的助攻。

我记得云斗的民间数据里我的分数是:

80 + 20 + 8 + 100 + 4 + 28 = 240

我到现在都不知道为啥我的 D2T2 在云斗民间数据下只有 4 分,不过好在最后的分数还是 12 分。我场上写的 24 挂了,但问题不大。

另外一点是,那个没有进队的第一名的选手,省选 D2T1 只写了 60 分,在云斗的民间榜单上由于数据太水测成了 100。当时根据民间榜单的分数来排,我刚好被挤到省队外第一名。

我不记得我当时是怎么接受这个消息的。好像这对于我来说太残酷,太不公平了。Day1 被卡开题顺序,D1T1 挂分,D2T2 挂分,D2T3 翻盘无望。感觉如果就这样止步了,好像真的会有很大的遗憾。不过我当时似乎异常的平静,平静地接受了自己将会退役的事实,平静地回去学文化课,平静地为我的高中学习做出规划。我到现在都不知道为什么我当时能做到那么平静,但好在我不需要再去细想了。进队了就是好的,进队了就足够了。

现在回想起来,省选的故事感觉非常离奇,像一本烂俗的三流小说里的套路。Day1 的折戟,Day2 的翻盘,野榜评测时的黯然,名单公布时的欢欣。大起大落,大喜大悲。你说得对,但这就是 OI。

遗憾也不是没有。一部分是我自己的遗憾。我没有 A 类进队,也没有场切 D1T1,还在场上又被开题顺序卡了一次。另一部分大概是来自于别人的。很多和我关系很好的同学没有进队,现在似乎 24OI 只剩我一个人孤军奋战了。

好像我从来没有处在这么艰难的境地里,好像 24OI 也从来没有处在这么艰难的境地里。

恍惚间发现自己已经是 24OI 旧时代的最后遗老了。在二十四当了十多年教练的 GG 去了北京;上一届学长们没有金牌,高三都去学文化课了;同一届的同学们没人进队,只剩我一个人留了下来;下一届的学弟学妹也里没有我熟悉的面孔,几个和我很熟的学弟因为各种原因选择了退役。

我是 24OI 旧时代最后一个人了,我也是 24OI 新时代的第一个人。

我终究还是走到这一步了。

已经没有什么可难过的了。

已经没有什么可遗憾的了。

已经没有什么可恐惧的了。

那就,继续向前。

当泥沙渗入我的生命

当风云变幻越发狰狞

力竭声嘶 桑弧蓬矢 奔向黎明

——卦者灵风《黎明》