「闲话」NOI 2023 比赛总结
Day 1
打开题面,看到两道计数题,有点小惊讶——根据以往的题目类型看,NOI 在一天中出现两道计数类型的题目确实比较罕见。
不过冷静了一下,也许这也不是坏事。毕竟数数题是我很擅长的题目。但在 NOI 以后我意识到并不是这样。
读题的时候就觉得这个 T1 应该非常 easy,那就先开 T1,越想越 easy。从 8:20 左右开始写 T1,写到 9:30 的样子就基本完全结束,最后就在后台留了一个拍子慢慢拍,之后没有了。
目前还剩 3h30min,留给后两题的时间并不少。面对 T2 的时候,我选择了比较保守的策略——根据部分分思考。
-
首先快速得到了 \(m=0,1,2\) 的答案。
-
然后用组合手段解决了 \(n=1,k=0\)。
此时已然过去了约 50min。回头再看的话,如果我能拿好 70pts,那么这个速度并不慢。然而,考场上难免比平时紧张,且我通过大屏幕上的倒计时——而非平时常用的“时钟”——来定位时间,带来了一定的陌生感;二者加起来的结果是,我觉得自己推进得太慢了,心里有点紧张。
- 接下来尝试将组合方法推广,一个方向是推广到 \(n>1\),另一个方向是推广到 \(k>0\)。
两个方向都尝试。\(n>1\) 很容易,简单生成函数即可。然而,\(k>0\) 不能直接用组合手段解决,硬套组合方法反而会走入歧途——这也就是我犯的又一个错误。更甚者,在不确定 \(k>0\) 做法的错误原因情况下,我开始怀疑 \(n>1\) 时的推广是否正确——而没有主动写程序验证。于是,唾手可得的 20pts 被我亲手送掉了。
T2 应有的时间基本耗完了,我意识到不能再跟它拖延下去。为了让自己暂时脱离 T2 的思考(以期自己可以跳出旧有的思路),我开始看 T3,马上发现这个 T3 送分力度也很大——不仅有 52pts 是白送,还有 20pts 看起来可以用 NOI2020 的 D1T2 的做法解决。
我当时就急了啊!一急之下,我放弃了 T2 的 10pts 暴力(老天,当时我到底是怎么想的!),头也不回地扎进了 T3 的解题过程。首先写一个 36pts 的 \(O(2^kn)\) 容斥,10min 搞定。然后写一个 \(O(n^3)\) DP,尝试将性质 A,B 一网打尽,搞了四五十分钟也没搞定。此时比赛已经进行到 12:10 左右,我终于意识到这个 DP 是不太可能搞定了,回头补上一个性质 A 的 \(O(n\log n)\) 做法。
来到 12:40,回头尝试再在 T2 上再捞一点分。然而,我还是没有想懂 \(k>0\) 为什么不能用组合手段解决,贸然地选择了去拼 \(k>0\) 的做法,而不是写暴力。不出意外地,最后我也没有搞定这一个部分,只能怅然进入检查流程。最后 5min 我终于想清楚了原因,为时已晚。
Day 1 唯一好一点的地方,就是没有挂分。
最后的分数是 192pts。虽然不是很好看,但也不是特别特别糟糕——属于是能够给 Day2 留下悬念的那种。
Day 2
怀揣着忐忑和希望,我进入了 Day 2 的考场。
Day 1 在 T2 上的失利让我耿耿于怀,觉得自己的实力没有充分地发挥。于是,我给这最后一次比赛的期望就是——找回自己,赛出风采。
开题,发现这个 T1 看起来还是很简单——这可不太常见啊。(此时我突然意识到,今年的 NOI 可能就是往简单了出的)和昨天节奏类似,在 9:30 的时候完全结束了 T1 的工作。
为了避免复现 Day 1 被题目牵着鼻子走的情况,我决定给后两题各留一些时间进行 general thinking。不出 10min,我就意识到 T2 很有可能是纸老虎题——好巧不巧,还正好是我相对擅长的字符串兼树论题。没错,在 NOI 之后我又不这样认为了。
一瞬间,我感觉这是命运的眷顾,也许这就是天赐的机会。
考虑到 T2 的实现时间可能很长,我先实现了 T3 的暴力,但没有做任何检查,而后上了个厕所冷静一下。留了 2h30min 的时间,我开始全力冲击 T2。然而,又是情急之下,我鲁莽地犯了错误——我实现的,实际上是较为复杂的 \(O((n+q)\log^3n)\) 的做法。而只需对思路进行简单修改即可得到 \(O((n+q)\log^2n)\) 的更优秀做法(to be exact,把字符串反接在原串末尾;统计的时候将对于下标的偏序合并)。也许只需要再做出优化思路的尝试,我就可以意识到这两点,但我并没有。
结果是,实现耗时为 1h15min,超出原定时间 15min;调试时间超过了 1h10min,最终还是没有调出来。简单来说就是,寄。
Day2 不仅发挥得差,还挂分了。T3 因为没有检查,出现了溢出问题,丢掉了 10pts。
对于 T2,上天怜悯我的辛苦,让我比暴力多通过了一个测试点。
沉默。
总结
回顾这两天的考试,放在平时的模拟赛里也一定是考得最烂的那种,一定是会被我自己拿出来批判的那种。
我无数次地期待自己能够发挥出真实水平,能够打得酣畅淋漓、潇洒畅快且不留遗憾。然而命运就是要开这样的玩笑,让我狼狈这两场,痛失渴求已久的金牌。
说回自己。我不认为自己实力不够,我也不认为自己的策略有很大问题——D1T2 跟着部分分走本来就可以拿到 70pts,D2T2 如果不拼一下根本没法翻盘。
比赛犯的最大的错误,就是我很多时候都带着情绪在参赛,而没能冷静下来认真思考认真规划:
-
面对 D2T2,急躁,没有能冷静下来拼上思路的最后一块拼图。
-
面对 D1T2,先是畏惧,将题目误判为“困难”,没有尝试正解,即便它很简单。
再是急躁,甚至连暴力分都没有把握住。
以及焦虑,某些正确的直觉在这样的状态下被忽略了。
于是,我便无法控制自己,思维也不受控制。这种感觉,就好像自己乘扁舟顺急流而下,根本没有办法干预比赛过程,只能看着自己失控。
所以在你要战胜外来的敌人之前,先得战胜你内在的敌人。
我想,这一次失败,便是因为在被外来的题目打败之前,我就先被内心混乱的车马碾压致死了。
这样一想,总有“莫道投鞭虚语”之感。拥百万大军,苻坚依然败于淝水;纵有一定实力,无法克服内心的障碍,自己依然失掉金牌。
无论是我的同班同学,还是下一届乃至更年轻的 OIer(我想不太会有其他人看到了),我都希望读到这里的列位能引以为戒。
后记
既然写到这里了,那我还是用《约翰-克利斯朵夫》里的原句作结:
真正的光明绝不是永没有黑暗的时间,只是永不被黑暗所掩蔽罢了。真正的英雄绝不是永没有卑下的情操,只是永不被卑下的情操所屈服罢了。
他(克利斯朵夫)看到人生是一场无休、无歇、无情的战斗,凡是要做个够得上称为人的人,都得时时刻刻向无形的敌人作战:本能中那些致人死命的力量,乱人心意的欲望,暧昧的念头,使你堕落使你自行毁灭的念头,都是这一类的顽敌。......
他(还是克利斯朵夫)徒然对自己作种种的幻想,徒然想回到过去那种镇静、坚强、安静的境界。一个人决不能回到过去,只有继续向前。回头是无用的,除非看到你早先经过的地方,和住过的屋顶上的炊烟,在天边,在往事的云雾中慢慢隐灭。可是把我们和昔日的心情隔离得最远的,莫如几个月的热情。那好比大路拐了一个弯,景色全非;而我们是和以往的陈迹永诀了。
(所以)在你要战胜外来的敌人之前,先得战胜你内在的敌人;你不必害怕沉沦堕落,只消你能不断地自拔与更新。
...
战士啊,当你知道世界上受苦的不止你一个时,你定会减少痛楚,而你的希望也将永远在绝望中再生了罢!
Als ich kann.