[2024.11.23]NOIP2024模拟赛
又废了。
没开 T3,所以赛后需要重新写。
赛时
T1 第一眼捕捉到字典序,同时还注意到了哈密顿路径。
数据范围很小,所以考虑枚举填充次序,每次找到最优的填充。
把以前已经填过的元素标记。对于当前的这次填充,它能填在这里需要满足后面最优的填充方式与之前填充代价的和需要满足条件。
不放先按照颜色排序,这样可以方便地遇到第一个合法元素就处理。
根据题目条件,当前及以后最优的代价可以得出是 \(\min(当前_x-x_{min},x_{max}-当前_x)+x_{max}-x_{min}\)。然后就可以找了。
去看 T2,先把暴力的写了。我用的是二分写法,所以一直往二分那方面想,最终也没有什么新进展。
T3 是个大模拟。一开始以为正常模拟即可,但是推了推发现题目上一中牌面会有很多种不同的组合方式,导致感觉复杂度是指数级别的,而且我不会打麻将所以打算先放一放。
去看 T4,看上去两种操作都很有特点。
先把 10pts 的纯暴力写了,然后考虑如何使整次操作的复杂度达到 \(\mathcal{O}(q)\)。
发现对于每一个元素,先特判掉未进行操作一的情况,那么它最后的值一定是在它最后一次操作一之后最大的那次操作二。于是可以以操作时间为下标建立一个支持查询区间最大值的数据结构。由于不需要修改,所以可以用 ST 表实现。
去看性质,第一个性质想了想发现只会对一个元素的贡献产生影响。所以可以把每个元素的操作一的时间用 set
存下来,每次删除这次操作后重新计算它的贡献,更新总答案即可。
写完以后还剩 40min,感觉现在开 T3 可能也写不出来,所以去看 T2。
想了想发现匹配长度一定存在循环节,所以只需要找到这个循环节,用数组存下来,每次对循环节长度取模后输出对应值就可以了。
此时还剩 20min,写了一会发现我不会找匹配长度的循环节,所以就摆了。
赛后
T2,T3都过了一车,所以我 T4 建立的 40pts 优势荡然无存,成功倒数。
T2 听了 PSM 的讲解感觉赛时脑子糊涂了,很快就订了。
T3 后来想了想发现可以枚举补充的牌,按照这种思路计算是否合法,待会去补(补不完不让走)
希望 RP 守恒。