First, and Last —— NOIP 2024 游记
NOIP2024 游记
过去几年参加 NOI 这类的比赛,看到正式题目总是会有一种庄重感 —— 因为平日里那些再普通不过的训练和模拟赛,转眼间就变成了正式的,决定命运的比赛。efz 机房作为考场也会给我类似的感觉。
只不过这次回来就不再如此了。现在的我只是觉得,在经历过 OI 的那么多风浪之后,一个老练的税收重新返回故乡的小河,一切都会显得那么平静。而我仿佛也置身于考场焦灼的气氛之外,虽说时间和空间上和大家同处,但却又有种疏远感。
拿到考题的我做了一个决定,去用一些之前没用过的策略和方法。我在正赛中从来没有忽略过部分分,从来不会不打暴力和对拍。不过这次既是最后一次 OI 赛制的正赛,那不妨便尝试地有趣一些。若是因此而挂分没有 400 的话,那也算是给我的旅程添上了一个滑稽的小尾巴。
我先看了看 T1 和 T2。T1 看到题就想了一个贪心,但是感觉贪心的证明并不显然。然后再看了眼 T2,发现比 T1 更简单。于是我就开始写 T1 了。我很快地写完了代码,但是却无法通过大样例 —— 我开始怀疑贪心的正确性。10 分钟后,我发现我将所有数组的类型都开成了 char
,也确实幽默了。T2 倒是没什么小插曲。
也是在这个时间节点,我突然冒出了前文所叙的感受。我顿时感受到,就为了这些瞬间的情绪,或许从北京到上海的来回也是值得了。
然后是 T3。拿到 T3 的我其实没什么头绪,但是简单思考了一下
T4 在我拿到题的时候我就看了眼,就大概会了一个双 log 的做法。但是当我真正开始想的时候发现我的做法问题确实有些多,并且双 log 也肯定过不了。我此时想到了我 NOI D2T2 时 —— 因为确实这两题有一定的相似之处,都是树上启发式合并一类的东西(虽说我最后也没用到启发式合并)。然后我就花了半个多小时的时间去编新的做法。我发现对于链,建出笛卡尔树之后,只需要先在笛卡尔树上从两个端点往上倍增,然后最后再离线用线段树处理区间包含的情况就可以了。然后我觉得树只需要套一个启发式合并就行了,直到我写了代码发现启发式合并我要两个 log。我又想了一会儿,编了一个我从来没见过的在树上做区间分裂的做法,然后在剩下的一个小时内编写 + 调试通过,应该总共一百五十行吧。最后还剩十分钟,也是有些心惊胆战了。
我通过所有样例的刹那,也是重新回到了去年那时的激动。当时也差不多是这个时候样例全部通过的。
比赛结束后,一如既往地响起了各种地讨论。坐在我旁边地是一些 sfls 的初中选手 —— 应该和四五年前的我差不多吧。有发挥失常的,有两三百分的。作为一个看客的我,虽说也想和他们一起说上一句,但或许也是这层疏远感告诉我我不应该多嘴。
因为我也只是悄悄回到了四五年前的我的身旁罢了。
于是对着那时的我,我又重新悄声道
坚持下来了呢,到最后。
简要题解
注:上文最后一句话引用自 LoveLive μ's 第二季最终话,穗乃果面对曾经的天台说的话。我觉得意境十分相像。
T1
设两个字符串分别为
证明略。考虑按照题目给定的
T2
式子懒得算了。大水题,注意到相邻两个限制之间基本怎么填写都合法,不合法的情况只有从左侧一直不断往后限制直到最后边,随便列个式子就好了。
T3
考虑
T4
首先考虑链的情况。建立笛卡尔树后,可以发现:对于问询