这是我的信息学奥林匹克竞赛(OI)回忆录,记录范围大致为 2020 年 5 月至 2026 年 3 月。
省流:我的竞赛生涯并没有太多传奇的经历,平平淡淡打了几年,高一拿到省一后选择退役。
经历
NOIP
ZJ 高一 OIer。半小时过 T1,罚坐四小时。T2 推两小时式子做不出来,T3 和 T4 乱搞。
报名
NOIP 考试操作系统能选 Windows 7 或 NOI Linux 2.0。
大部分同学系统都选 Linux,因为和 CCF 测评一致,不容易有神秘问题。
我日常用的电脑是 MacBook Pro (M3 Max),是 ARM 架构的,但 NOI Linux 2.0 只提供 x86 版本,架构不同用虚拟机也跑不了。
我不能提前适应系统,就选了 Windows 7,虽然我 Windows 也一年多没用过了。
Day 1
早上
晚上没睡好。
早上洗漱时眼睛框断了。
还是经典的杭师大仓前校区恕园 16 号楼,浙江考生的梦魇。
准考证号 ZJ-0175,考场 302B 机房,座位号 B51。
进场
喝口水上个厕所。
考前已经做好最坏的打算,所以进场的时候比较冷静。
今年考场机位明显比前几年宽敞,腿终于可以伸直了。
CSP 我是某排的最后一个座位,一边没人很舒服,而另一边是同学 zjy。
开考
日常开考前玩电脑被监考老师警告。
压缩包密码是广播报的,没听清硬吃两发罚时。
这次 NOIP 压缩包密码是 !noip@Nov29.2025:dream,此后 NOIP 还有 dream 吗……
解压后复制样例,新建代码文件。
我命令行编译懒得写,就用 Dev-C++ 作 IDE,Visual Studio Code 看样例。
比赛测评是 gcc 9.3 的 C++14,可以兼容部分 C++17 特性,例如优雅的结构化绑定,我给编译命令加上 -std=c++17 和 -Wall。改完发现不能编译,应该是编译器版本不对,换成红色的新版 Dev-C++ 就可以了。
T1 交替价格感觉很熟悉,模拟赛好像做过类似的题,但我忘了。
求最大值想到可以二分,写了一坨代码过了小样例,正确性和复杂度没问题,但大样例挂了应该是爆 long long 了,果断使用 __int128 过了
我不确定 __int128 能不能这样用,但先不管了,T1 用了将近半个小时。
赛后发现直接贪心也可以。
巧克力真好吃。
T2 是一道计数题,我比较擅长。考前一周教练开会还说要重点复习,还真考到了。
去年 NOIP2024 T2 也是计数题,那题并不算难。稍微分析了一下感觉不可做,但是还是要思考一下。
先写个快速幂备用,贪心策略什么时候不优是显然的,但推了 2 小时还是不会,开摆做 T3 吧。
根据历年经验 T2 不过肯定拿不到省一,心态有点崩溃。
申请去上个厕所,冷静一下。
巧克力真好吃。
T3 题面比较清新,给树上所有节点赋值,求每个节点子树 mex 之和的最大值。
看上去像思维题,但也做不出来。
巧克力真好吃。
T4 序列询问,显然是 DS 题,我不是很擅长。先写个最基础的朴素暴力 不给分。
从地上捡了个 ST 表优化到 ,测试点 2,3() 勉强能过,因为数据卡不满。
测试点 6,7 是特殊性质 A,区间长度固定,每次询问重建 ST 表能做到 ,赛后发现用单调队列能优化到 。
测试点 8,9,10 是特殊性质 B,区间上限 ,我的暴力 不确定能不能过,听天由命吧。
巧克力真好吃。
其他的特殊性质不会,回去看 T3 吧。
赛后洛谷跑出来是 1.4s 左右,幸好 T4 时限是 2s。
巧克力吃完了。
T2 快速幂都写了,甚至忘记 和特殊性质 A 可以直接输出 。
赛后
13:00:00
比赛结束,选手离场。
楼梯间全是人,不想排队挤出去,我从旁边另一栋楼的神秘电梯下去了。
「别笑,你来你也过不了第二关。」
考完一脸懵逼,估分 。
赛后洛谷 T2,T3,T4 都是黑题,吓哭了。
后面 T2 降紫了,看来模拟赛还是出的保守了。
出题人可以和隔壁物竞联赛坐一桌了。
出分 ,T2 挂零,符合预期。 还有省一?
不知这次 NOIP 毁了多少人的前程……
思考
学 OI 我得到了什么?
我失去了什么?