[游记] NOIP2023 游记

· · 个人记录

「若在这世上的颗颗回忆能够看见的话,和夜空光芒比起来哪个多呢?」

Day 0

其实我忘了 Day 0 做了啥了。

大概是看了看自己 5 年 OI 的全部回忆吧。

Day 1

下午进场,位置又在某一排的边界,空间稍微大一点,上上签。

发现压缩包巨大,每个题都有 \geq 4 个大样例,赢!

发 PDF 密码的时候已经 8:30 了,于是就没有先看完所有的题,发现 dict 是签之后就直接开始写了,加上写板子 10 分钟搞定。

然后再一看这个 tribool 好像也是签啊。是不是求出每个数最终会变成的形式然后跑二分图染色就行了,写完忘了开栈差点以为自己不会写代码了,最后 15 分钟搞定。发现大样例都是特殊性质,于是又花了一点时间检查了一下。

再往后看似乎 expand 是一个不那么签的题,瞪了一眼只会 O(n^2q) 的暴力 DP。诶这不都是第三题了嘛,那不签也是正常的,但这样有两个难题策略就有点难定了,不如先把两个题都看看?

看完 run 就简直不敢相信自己的眼睛了,这也配当 NOIP 压轴题?这不是板子线段树优化 DP?再读了三遍题面确定自己没读错,然后 30 分钟写完了。写完了之后更不敢相信自己的眼睛了,还写了暴力 DP 拍了几组。

一个小时三个题,怎么输?上了个厕所回来认真思考 expand,先从特殊性质入手,观察序列最大值/最小值处的性质。考虑了一下发现只有更新前缀最小值和最大值的位置有意义,决策一定是通过一个前缀最大值 rush 到一个更后面的位置,来满足一个前缀最小值,再等到另一个前缀最大值继续 rush。

那么显然一个前缀最大值能 rush 到的位置是一个不断往后扩展的前缀,每次只要在前缀的位置里找到一个能停的位置就可以满足这个前缀最小值,可以用单调栈维护一下。

然后突然发现,只要找到局部最小值再将序列割成两半,原问题也就得解了,时间复杂度 O(nq+mq+\sum k),太对了哥。

实现是比较简单的,但在 a_1<b_1 时交换 a,b 的过程写挂了导致类似 n,m 打反的 bug,最后在 11:00 的时候成功 AK。

AK 完感觉四个题都写的有理有据,把 expand 又和暴力拍了一遍之后就觉得无事可干了,开始胡思乱想。

胡思乱想的内容现在不想公开。

反正最后两个小时也基本没动自己的代码。

Post Race

cml upd zky zmx 都说自己 AK 了,mermer 好像 expand 带 \log 会少一点点分,sjy 不出意料找到了 expand 的原题,这下四题每一个好的了。mophie 好像后面两题都没过,有点小寄。

结果 zky 文件夹建错爆零了,cml tribool 写挂了一个开 -Wall 能检查出来的错误,upd run 写错了一个细节,这下现役选手只剩两个 AK 了。唉。

浙江云斗数据有 25 个 AK,队线不出意料是 400。

感觉潜在的问题还有好多啊。ZJOI 没有 zky 会不会导致区分度的再次提升,NOIP 的大量 AK 会不会让 ZJOI 彻底疯狂。

关于她的部分。不知道该不该写。也不知道怎么写。或许即使写了也不该现在发出来。

但真的很难接受这样的结果。无论是自己还是海棠。好希望这就是一场梦。第二天醒来的才是真正的 NOIP2023。

后记

即使定会光芒淡去名字也会忘记

即便如此仅仅我们两人

照亮那一隅的闪烁光芒我也愿视之永恒