省选联考 2026 游记 / Doomed Criterion

· · 生活·游记

Day -2 / 2026-3-5 / Late Start

发生了一些事情。

今天打了最后一场模拟赛,得分是 40+30+50=120,由于厉害选手全都没来,拿到了第二,算是集训以来的最好成绩。

领略了 Gemini 3.1 Pro 和 Claude Sonnet 4.6 的强大力量,用 Gemini 写出了利用 Python ortools 编写的强大暴搜,用 Claude 在二十分钟内写出了一个有基础功能的正弦波音乐谱面编辑器。晚上还想用 Claude 写一个基于 AGS 的 Hyprland 控制器。

也许是快要离开这个世界了罢,所以我加紧尝试各种厉害的 AI 工具,来尝试从前只存在于我的脑海中的各种想法。

成绩?

大抵是无法追求的了。

https://claude.ai/share/d5c8c5ba-8708-424b-835c-3ae645a2e04c

Day -1 / 2026-3-6 / Trial

试机。没有大问题,但是前面好像有选手分到了不太好用的键盘。有选手问为什么共享文件夹用不了,后来证实原因是 D 盘没有叫 public 的文件夹。难道说全国所有正式比赛的 NOI 虚拟机配置都从一个模子里做出来的吗?连共享文件夹的路径都一样?

线性逆元 10^8 的用时来到了一秒以上。2^{20}4\times 4 矩阵做高维前缀积,好像是 1s 左右,记不太清了。递归 10^8 层竟然要 1s 左右。这不该是 Intel 最新一代拿掉了开头的字母 i 的 CPU 该有的速度啊?哦,3 啊……那没事了。

昨天晚上借助 Claude 把设置应用写出来了。界面上的问题多问几次就搞定了,现在只是有一些 Variable 的名字对不上,手动修改就行了。至于为什么我不叫它修改,是因为免费版的额度不够用了。至于为什么不够用了,是因为我还想让它写个 Bar,结果 Bug 一堆,几次对话还搞不定。

就目前局势来看想进省队真是天方夜谭啊。

Day 0 / 2026-3-7 / Imaginary Counting

开赛前规则改变了若干次,光是能不能带水就决定了半天。赛前把 U 盘从笔袋里拿出来,这是和去年一模一样的环节。

开赛,查看题目,吓哭了。T1 就上 998244353n\le 5000 的树上期望 DP?玩牛魔?T2 的 n\le 200 是什么鬼?T3 为什么同时存在 n,m,T\le 50n,m\le 250,T\le 30 的数据?这 T 还能不完全偏序的?看得出来出题人很不喜欢快读,直接怒砍输入量告诉选手卷这玩意没有前途。

那没辙了,不做 T1 做 T2 T3 更没戏。看 T1 吧,以防理解错题意手模了若干次确定了正确的题面。然后对着思考两个小时,没有结果。不是那咋整?我 T1 就要这样打 O(2^n) 耻辱退场了?

不甘心啊。然而,又过了半个小时仍然没有任何进展,智能先写一个 O(2^n) 了。结果就这玩意还要花我十分钟调试。过了 n\le 20 的样例。此时比赛已经过半,触发熔断机制,先快速完成 T2 的 15 分和 T3 的 8 分。期间忍不住想思考这两道题的更多特殊性质,但我一直压制住这个想法不让它们打断我的节奏。

事实证明,我在上一个段落所作的决策对我来说是极其正确的。对 T1 O(2^n) 解法的实现过程暴露出了当时我的预期解法中转移式的一些问题,在完成这个暴力的实现后转移式实现更加明确了,这为我的后续草稿提供了参考。而对 T2 和 T3 暴力的实现所带来的更多是心理作用:它们提供了兜底,至少让我不会一直怀有“我还有没拿的分”的想法。

接下来就是背水一战。我写出了一个非常暴力的前后缀背包合并做法。实际上,看到这个东西后我就有过想将其转化为撤销背包的想法,但是这道题的撤销背包操作包含复原一个在操作时被显式设为 0 的值,这让我不知所措。这让我最终选择了时间复杂度更高但对当时的我更为稳妥的前后缀背包合并。

写完之后,运气比较好,可以直接通过 n\le 500 的数据,但这显然不够。于是我加上了树状 DP 常见的 DP 上界优化,这能够将时间复杂度的指数减少 1

写完之后自然出现了一堆问题。看起来代码逻辑是没有问题的,但是就是会出现一堆错误。随后,我尝试在每个测试点 memset 整个数组。答案变了!这说明是转移的边界问题,因为我没有初始化上界之外的点,因此每次转移的时候都需要多加小心。于是我一个一个地将可能出现的越界情况消掉,每消掉一个,正确的点数就多一点。

最后,更改了两处错误后,代码已经能通过 n\le 1500 的 B 性质点了。但是,n\le 5000 的点还需要跑 47s。

怎么办?已经 12 点了啊!要没时间了!怎么办?

此时,我突发奇想。

要是我们给它再加一个下界会怎么样

说干就干。由于下界引入了更加严格的限制条件,在写每一层 for 循环的起点和终点的时候就需要更加小心。于是又是一番调试,通过了第二个大样例。

随后,第三个,第四个,第五个,第六个也快速通过了。随后,第七个……只用了 0.8s!diff 指令没有返回错误!

这是难以用言语表达的激动。此时是 12:15 左右,我确信我已经达成了一次重大突破。但是,我做到最好了吗?

接下来的十五分钟,我大脑放空,上下浏览着题面,不知道该做些什么。然而,我知道,我仍未燃尽,作为高中生,作为正式选手,我必须进一步挑战自己,超越自己!

随后,我开始寻找更多的部分分。T3?看到了!是 m=1,只需要检查所有数的异或和是否与最终的数相等即可!快速完成实现。尽管只是 4 分,我也需要将其拿到。

T2 似乎不好下手。但是,字符串全 0……知道了!此时字典序严格小于它的只有长度小于它的全 0 串!只需要贪心即可……吗?

写了贪心,错了。

此时距离比赛结束还有 25 分钟左右。坚持住,这个 DP 比较简单,能写完!随后一通写,在距离比赛结束 12 分钟时通过了 B 性质大样例。接下来重新编译所有的程序,对所有大样例进行重新检查……与预期一致。

关闭 NOI Linux 虚拟机,运行 checker 最后确定信息,关闭所有窗口,显示电脑桌面。

比赛结束。

最好分数:100+30+12=142

最坏分数:64+15+8=87

去饭堂的路上见到小孩并添加其洛谷好友。

纪中人不用筷子。

构造出了把我的做法卡到 O(n^3) 的数据,实际上是 \frac{n^3}{27}。破防了,要是当时把儿子按照 mxd 排序就好了,可能可以降到 O(n^{2.5})

回到酒店摆烂。

明天考完,照例要回学校坐牢……这样的生活,真的是我愿意的吗?

在酒店,尝试更好的家具,研究用 Linux 投屏电视的方法,学习自己泡茶,与 AI 合作制作 Hyprland 设置软件,再阅读一下反物质维度灭世更新的最新代码,又或者是上 B 站看看最新的乐子……我想要过这样的生活。

但做不到啊。

我希望明天我仍然能像今天这样燃尽自己。我知道自己很难追赶上那些思想超前的前辈,但我仍然要在我的能力范围内做到最好。

Day 1 / 2026-3-8 / False Prediction

开幕雷击之昨天说“可以带检查后的水杯”今天说“只能带透明水杯”。最后还是允许带进去了。工作人员记得还没我清楚。

比赛开始。开幕雷击之两个交互加一个套娃数据结构。难搞哦。

先看 T1。构造?n 次查询?还好我在 WC 吃过这种 shit(实际上是 CF 的题目)。然而这并不妨碍我仍然在这道题上卡了很久。我首先尝试做特殊性质,然后快速搞到了特殊性质 AB 的做法。

然后我就一直卡在 2n+\log n 次查询的解法。显然通过这题需要严格的 n 次查询,我却想不到快速查询 0 的位置的方法。

就这样过了两个半小时。然后突然发现可以查 0 前后缀和 0 后前缀,这种方法虽然不知道正确性却能确保 n 次查询。那这个不对还能哪个对啊,开写。

写写写,过第一个样例,没过第二个样例。

然后发现把剩下的值按上去的方法错了,写写写,过了第二个样例。感觉样例不强啊,随个 n=10 的数据看看。WC 没过。

哦,原来 0 右侧位置的特判写错了,改一下。过了。

感觉边界情况很恶心啊,写个试试。把 n=2 的两个排列写进去,WC 没过。

哦,原来 0 在最右侧的情况少赋了一个值。改上去。过了。

造几个 n=3,4,5,6 的试试看,没有问题。

再造几个 n=500 的,没有问题。

此时比赛已经过去了三个半小时。我也是个神人。

然后看 T2。完全爆搜看起来过不了(这里都是“当时”的看起来),于是我写了非常暴力的贪心,连第三个数据都会 WA。破防了,就这玩意花了我半个小时。

剩下一个小时自然只能尝试理解最后一道题的题意。做整道题显然不用想了,只能尽力打打暴力。然而连暴力都不会写,只能继续观察性质。WC 第一个样例是菊花图!WC 第二个样例是树上距离!

冲刺♿!冲刺♿!冲刺♿!

过了那两个数据。

比赛结束。

最好分数:100+0+8=108

最坏分数:0+0+8=8

我在大巴车上喝着奶茶。很好喝。然而,喝完奶茶一段时间过后,我感觉有一股气跑到了胸口。很难受。

系着安全带,感觉安全带压着胸口,让我喘不上气。我必须用一侧的手臂短暂地拉开安全带才能舒服一点。

下车,碰到了语文老师,她带来了一个消息。

晚上要语文考试

笑死,没上课怎么考试。直接请了假。

高二的学长在中途的地铁站就下车了。他们可能会休息几天再开始上学。

毕竟,这是他们已经拥有的“生活”。

Fin.