【深入讲解】如何让自己每道题的分数取到极值?

· · 生活·游记

Day 0

严肃拜读机房大神的 OI diary。

自己也写了一些对之前模拟赛的总结。

对 NOIP 的难度做了无数种猜测,我一直认为哪怕是 2022 年的 NOIP 我也是可以过 >=2 道题拿到 300+ 的。于是我的考试策略就是先最简单的两道题,再写剩下的两题。

Day 1

保持冷静,相信自己。考前一直在和自己强调这句话。

敲了半个线段树和缺省源。

8:30 发下密码:!noip@Nov29,2025:dream

开 T1。背包?m<=1e18?贪心?好的。8:40 通过。是不是和去年一样能速通前两题?

开 T2。联动?在说啥?不确定,看样例。好险,差点理解错了。n 只有5000,感觉是枚举两个东西算。

容易发现不合法的情况是 1 2 1 或 1 2。前一种显然更难。

半个小时想着要枚举两个 1。然后这里我把按性价比降序的序列和按 a 降序的序列搞混了,得到了一些非常诡异的性质。我利用这些性质在 9:40 左右写完并通过了样例 1。但是样例二 WA 了。

调了 114514 年。把写代码时产生的错误都排完了才发现自己把两个序列搞混了。

这个时候已经 10 点多了,有点慌。去了后面两道题,T3 分析出一个值域连续的性质,好像可以导出多项式复杂度的做法。T4 ST 表有一些分。

但当时我想着,不过 T2 我不就寄了吗?于是一个部分分都没写回头继续去想 T2。

由于已经是中后期,费劲九牛二虎之力才强制自己把这个题理清。我可以枚举两个量,然后 O(1) 算贡献,这怎么算呢?10 min 以内我只想到 n^3 做法,打算写一下算了。

写的时候尝试使用预处理技巧,失败。但是突然发现贡献是两个组合数的乘积,把式子列出来是范德蒙特卷积!赶紧在草稿纸上写式子,推清楚,写出了代码。

11:20 WA on sale2.

11:30 WA on sale2.

11:40 WA on sale2.

11:50 WA on sale2.

12:00 WA on sale2.

这个时候我已经要崩溃了,甚至脑海里已经开始想象自己以 100+eps 的分数结束 OI 生涯。我完全想不出自己的做法有什么问题,手模也完全模不动。然后这个时候我想着 12:10 还没看出来哪错了我就写个暴力跑一下其中一组数据。

12:08 我感觉我也瞪不出啥了,于是就写了,然后发现我忽略了一种可能的顺序取法!(但我现在想半天也没想出来是漏了啥,大概率只是因为这个重构了一次核心代码)

于是我把两个变量都取满,经过一系列边界调试,终于在 12:2? 的时候通过了 sale2。然后就一路过了所有样例。最后一个样例跑了 0.7 s 左右。

最后的半个小时,直转 T3,在下考前十几分钟写出了一个有较高正确率的 n^2 做法,但是由于即将下考,我特别紧张,最终交上去了这个在样例 1 第 1 个点输出 8 的程序。

结束了。所以就是,100+100+0+0,出考场的时候我突然想起来自己 t3 的 dp_x,0 应该在 dp 完后赋为 1,而非 -inf,最终答案算出来差 1 就是这个原因。我当时整个人情绪特别失落,确实离预期差得太远。

Day 1.5~Day2

后来我发现,很多人都被 T2 创了,T3T4做出来的人都非常少。

后来我发现,原来我离队线只差了 34 题的暴力。

这场比赛确实反映出来我很多问题——面对想清楚就能做出来的题目太急躁,面对逆风局没有经验策略,没有打暴力,得分最大化的意识。

只是以高二选手的 NOIP 来反应问题,代价未免太大了一些。

没有挂分我还是会继续冲省队的。