CSP-S 2024 游记

· · 个人记录

早上复习了一下板子,又回顾了一次以往的比赛总结,随便开了两道蓝题,口胡了解法,清醒了一下。然后就出发去贵师大了。

路上一直在休息。到了之后和教练见面聊了一会,还跟 wx 胡了 J 组 T4 的解法,算是个小小的热身。

进考场了,试了键盘,很顺手,先建好文件夹,然后打了代码模板,测了快读,测了一下电脑效率,接着就默了点模板热热手。

开始了,但是由于电脑的问题,我没有收到下发文件,老师用 U盘 拷给我,耽搁了 4min ,但是似乎不能申请加时/kk。

先通读一次所有题,T1 一眼转化为了 排序之后求上升子序列最小划分数。 T2 一眼拍成区间,做贪心,但是由于浮点,所以会有边界细节。 T3 感觉有点诡异,又是一个 dp ,我不确定自己是否能解。 T4 感觉像 迷宫守卫 ,但是没有仔细思考,因为目前确定前面有两道签到题。

T1 和 T2 我先选了 T2 ,大概又想了想,可以把两问分开处理,所以就先写第一问 ,直接抄了题目上的公式,求出超速区间,然后存下来,之后读入摄像头的时候再判断是否被记录到。

第二问直接用第一问求出来的区间,直接做贪心。

一共 30min 不到就写完了,但是测样例 3、4、5 ,每个都会有几个询问和答案相差 O(1) 个数,于是我猜是边界或者精度爆炸了。先试了精度,换了几个 eps ,都没有用,于是是边界问题。重新读了几次题目,发现几个边界:速度=V 不超速,起点终点被记也算超速,摄像头是一个点。

改了边界,还是会有几个答案错误(其实这个时候脑子不太清醒了,导致改错了),于是开始了漫长的瞎调试,乱试边界,就这样,比赛开始快 2h 了,还是没有过最后几个样例。

感觉不太妙,于是先去拿 t1 的分,简单思考之后,发现 t1 等价于求众数出现次数,2min 打完了,也转化了一下脑子,回来看了 t2 代码,发现若干之前调试改错的位置,然后还尝试了把一个 eps 从函数里拿出来,然后就对了(很玄学,但是应该是因为函数里用了 根号,根号 eps 导致精度寄掉了)。。

然后检查了文件,又编译了几次,确保没问题,关闭了这两个文件,此时 2h 过去了。

然后此时我的策略是 先尝试 t3 正解,不行就打 70+ 的t3 和 t4 的纯模拟 16pts 。

尝试 t3 正解,我本来给 t3 的定位是紫左右,所以因此解题可能有点过于谨慎了。

先随便搞了个 dp 思路:枚举每个位置的上一个同色位置,然后接着就发现了这样难以转移。

由于当时过于谨慎,所以到这里就直接放弃了 dp 解题,开始考虑了一个贪心 ,这个贪心手摸了一下样例,发现还能过前两个,花了几分钟打了个暴力,结果 wa 惨了,细想一下,我的证明相当的假,但是似乎小范围下很对,就先保留了代码。

也是这时,我清醒过来了,这个 t3 的形式就算是贪心,也绝对是我没见过的贪心类型,我大概率想不出来,于是才转头考虑 dp ,由于打贪心的时候写了 计算价值 的函数,所以马上就设出来了一个基于记录 pre 的 n^3 dp ,仔细思考一下,看着很能优化,每次转移会坍缩到一个横线和一条竖线上,所以其实有一维是没用的,因为始终会有一个 pre指向 i-1,可以用 0/1 代替,表示哪个颜色对应 i-1。

简单列一下转移方程,发现我 0/1 维也是没用的,于是变成一个 1d1d 的 dp,直接写有 50pts 的高分,并且显然能直接优化到正解,但是保险起见,先花了 10min ,打了打了一个 n^2 dp上去,测了样例,很对,对着改成优化版本,这个其实可以直接简单做到 线性维护,因为只需要做全局操作和单点操作,但是我当时觉得直接做的话可能不好求 max ,于是写了一颗线段树来处理。 测了样例,全对,算了算空间,能过,造了极限数据测效率,本机极限数据 0.97s ,实际的评测机肯定会快一些,于是没有管。

又检查了一次,确认没问题之后关掉代码。还有半小时,开始冲 t4 的最低部分分暴力,但是实际由于我一边理解题意一边写,导致代码多次面临重构,奋斗到了最后 5min 还是没有写出来,按照往常经验,这个时候再继续写可能会导致大锅,于是直接保存(甚至没编译过),然后检查前面的代码,多次确认无误之后,29分的时候开始吃东西。

估分 100+100+100+0

实际得分: ?+ ?+ ?+0

希望 T2 不要掉太多分。

希望 T3 不要被卡常。

希望 T2 不要掉太多分。

希望 T3 不要被卡常。

希望 T2 不要掉太多分。

希望 T3 不要被卡常。

希望 T2 不要掉太多分。

希望 T3 不要被卡常。

这一次 T3 和 T4 的失误主要是因为 T2 的调试花费时间过长,根本上是一开始想的实现思路不够优秀,并且后面没有及时掉头。

教训:调试时间超过 40min ,就及时回头,先写点别的,换换脑筋,再回来看看实现思路是不是不够优秀。

教训:无论多小的题,能不用浮点就不用,一律替尝试换成整型。

教训:和 的最大值,一般不会很好贪心,很多时候只适用于反悔贪心,最好直接顺着考虑 dp。

教训:求代价最值,一定先考虑怎么快速求代价,因为就是考虑怎么才能让这样求得代价最大。

教训:只有全局和单点修改、查询时,一定要仔细考虑 线性维护方法。