忆 OI 往昔,峥嵘岁月稠(游记+退役文)
Day 0
感觉挺紧张的,明天就是最后一次 CSP 了。
今年换成当天早上去了,没法在酒店里皮了QAQ
希望能够拿到类似于 NOIP2023 的分数,暴力打满,挂分也降到最低。
Day 1
大概早上八点到达机房,跟 qhj 大佬讨论了几道他最近做的题目。
太菜了,一道都不会做,甚至还有一题听不懂。
看了一会儿题目后上大巴,在车上先是用电脑玩 DC (貌似有人觉得噪声大,我个人认为这主要是 zsj 的原因)。
玩了一会儿后一细胞暴毙两次,不想玩了,就拉着 wjy 打坦克动荡,俩人在那儿欢乐互射。
到站后电脑刚好没电,去酒店吃午饭,顺带看了 J 组题目。
T4 题面太长了,于是跟 ljn 研究了一下 T3 正解就没管了。
进考场,本来应该坐在 84 号机位的,但是因为机器故障后来调到了 77 号机位。
考试前上了个厕所,南航厕所挺干净的。考前胡思乱想了一会儿,最后利用这 30min 打了线段树,匈牙利,缩点,dijkstra 以及 LCA。
写完之后真的不知道该干啥了,坐在位置上挺紧张的,就疯狂地刷新桌面,看有没有将密码发下来。于是乎我便成了考场上领先别人 2min 看到题面的人。
先看了眼 T1,太一眼了,甚至都没动笔或者思考,花了不到 3min 打完并测大样例,写完比赛甚至刚刚开始。近几年提高 T1 真是越来越水了。
但下面发生了一件令我无法理解的事情,我到底为什么要紧接着去看 T4 呢?
说实话我也不知道我怎么想的,可能是想到去年 S 组的 T4 比较简单,也可能是因为觉得题面长度与题目难度成反比,看到 T4 题面长就去莽了。
看了一会儿甚至感觉自己会做了,写了一个先建树然后倒序将节点随机化的代码,样例一测不对,才发现题目读错了,要求输出的不是节点数,而是节点编号和。
现在想来真无语啊,要是题目要直接输出节点数,那么
个人觉得这才是这场比赛中我最大的问题,没想好就开始实现代码,导致花费很久的时间打一个假做法。
若是谨慎一点,将所有东西都考虑到,发现自己不会 T4 进而去打暴力,那么即使采取首开 T4 的策略,也会比现在多上 32pts 的暴力分。
到目前大概已经是比赛开始 1.5h 了,浪费如此多时间的我不甘心呐,于是便又浪费了一小时,打了个启发式树上 set 合并,最后发现根本不对。
到那时已经比较崩溃了,在官方考场上花费 2.5h 斩获
但好在思维没有完全乱掉,也还算清醒,果断将 3KB 的一坨启发式合并删掉,然后去看 T2。
从那一刻起,翻盘开始了虽然好像最后也没翻起什么浪花。
明白自己时间不多,果断抛掉 T2 较为构式的题面,直接去看样例解释,很快理解了题意。
挺板的,T2 也能一眼我是没想到的。当时脑海里大致想法是这样的:
将所有车的
先考虑
那如果
我们可以先二分求出每辆车能够行驶超过的最远测速仪
而又因为车的瞬时速度
最后存在多少个取值区间,就有多少车是能够被测出超速的。
这样我们就用 附加极大的常数解决了第一问。
下面来看第二问,其实就是个比较经典的贪心模型。
我们考虑将所有区间
-
初始
R=0 。 -
若
l_i \le R ,则跳过。 -
否则令
R \leftarrow r_i ,累加答案。
这样做的本质就是尽可能选每个区间最靠右的数(也就是
假如说枚举到区间
若你此时选择了
所以选择更靠右的点可以保证答案不劣的同时产生新的贡献,自然也就是最优的。
总体时间复杂度
绝对不是从提交失败的 T2 题解抄过来的
可以看出直觉下的思路还是比较繁的,但当时紧迫的时间已经容不得去优化了。最后大概总计花了接近一小时打完了。
此时还剩 40min,我明白这只够我从 T3,T4 中选择一个去做了。
开 T3,关注到部分分给了
紧接着就发现 dp 怎么这么一眼啊(恼),CCF 出的都是什么板子题啊。。。
先设
首先发现
时间复杂度一开始是
其实是可以用懒标记的思想做到
然而可惜,40min 只足够我打
我已经知道了,大抵 CSP-S2024 就这样了吧。