CSP-S 2024 游记
Day 0
发现考场就在某初中同学家旁边,打算考完找他玩玩,不过七宝作业太多了最后没见上(伤心)。
以及前一天是程序员节,但是仍然有信息作业。(恼
Day 1
地铁坐过了一站,直接导致忘记吃午饭(玩游戏玩魔怔了
下地铁之后开了辆车,骑到学校门口但是走错门了,又绕着学校骑了 5 mins 才到正门。
此时距离开考还有 15 分钟,。。。这也预测了 S 组爆炸的发挥。
14:30
开考,但是很多考生收到的大样例只有三道题的,少了 T1,过了 3 mins 又发了一遍才收到,不过还有几个人没收到(恼
接着才发了 pdf 密码,加了 6 分钟时。
开 T1,5 mins 码完,10 mins 改掉一个错误的地方,大样例一发过感觉不会错没对拍。
14:45
来片咖啡片,开 T2,显然可以算出每个车在哪些位置超时,这显然是一个连续的段,对于第一个输出的答案,查询这个连续段内有没有检测站即可。
然后考虑 $dp$,设 $dp_i$ 为 1 ~ i 个检测站,第 $i$ 个检测站必须要,且使得所有超速能被抓的车都被抓,最小检测站数量。
发现可以转移的 $j$ 是一个连续段,使用 $st$ 表优化,时间复杂度 $O(17n)$。
写到这里效率开始慢慢变低,brain 转得越来越慢,写 + 调挂了 90 mins 才过大样例,这时发生了一个小插曲。
我的源程序在桌面 10-CSPS 文件夹里,但是我以为它在 E 盘的 10CSP-S 里,于是我把 10CSP-S 改成了我的选手文件名,并且点击合并文件夹,合并之后发现 T2 代码不见了!
冷静一下,去一趟 WC,打算重写。
回来之后我再次确认 T2 代码有没有被删掉,最后在桌面上找到了。
又测了一遍,发现大样例要跑 1.6s 不是很稳,改成 scanf 0.9s 放了。
相信大样例(确信
16:18
又来一片咖啡片,此时思想仍然较为集中的在做 T3,花 30 mins 推了一些性质发现都没用,唯一有用的一个就是当前数字为 $a_i$,如果想要贡献答案,那么与上一个 $a_i$ 颜色必须相同,且中间的数颜色与这两个数都不同。
接着想到了一个一维 DP 但是加掉了,此时已经 17:00,也就是这个时候我的 brain 转速急剧下降,过了 10 mins 想到 n^3 DP 做法,写了然后发现有一维是废的,到 17:30 左右写了二维 DP做法:
设 $f_{i,j}$ 为前 $i$ 个数,上一个颜色与 $a_i$ 不同的是 $a_j$,最大分数。
转移 $f_{i,j}=f_{i - 1,j} + a_i \times [a_i == a_{i - 1}]$,$f_{i,i-1}=\max\limits_{j=1, i-2} f_{i - 1,j}+a_i\times [a_j==a_i]$
对于第二个式子使用花 30mins 推出的结论。
$f_{i,i-1} = \max {f_{i - 1, lst_{a_i} } + a_i, \max\limits_{j=1,i - 2} f_{i - 1, j} }$。
去了趟 WC 又吞了片咖啡片。
考虑如何优化这个东西,发现无法降成 1 维 DP。
此时就要用到 [ARC115E](https://www.luogu.com.cn/problem/AT_arc115_e) 的套路了,把上面的 DP 数组压成一维,然后观察每次这个一维数组会有什么变化。
我们发现,变化无非两种,第一种就是区间加,第二种是第 i 轮时 i - 1 的变化,这个会稍微复杂一点,但是是单点修改,所以可以这么做。
感谢写这题题解的大佬们教会我 S 组 T3!!!!1
最后 18:22 极限调完(因为 brain 转速极慢所以写错一堆地方),发现大样例卡常了,改成 scanf 和 printf。
本来还想看看 T4 的,但是时间真的不够了,题目才读完就遗憾离场了。
预估 100 + 100 + 100 + 0 = 300
Upd:T3 被卡常了,所以估分 100 + 100 + [75, 100] + 0 = [275, 300]
18:30
回家的路上一直头晕,才发现午饭没吃并且空腹吞了三片咖啡片,回家立马吃饭然后好多了。(路上仍然在玩游戏和睡觉,玩魔怔了
后记
时间真的很重要,前半场思想一定要特别集中,后半场 brain 基本废掉。
感觉后半场想 3 mins 题还不如前半场想 1 min 题。
T2 浪费时间太久了,以至于 T4 48 分暴力没打。
希望别挂分,这样就圆满结束了。