CSP-S 2024 游记

坐标 HB,时隔半年又来华科考试了。

13:40 左右到了考场,我以为自己算是到的比较早的,但是发现其实大部分人已经到了,不过进了考场之后机子也是被禁用的,好像也不亏。

遇到了一些之前的同学,已经是半退役状态的,说是过来玩一下?

14:10 左右解了电脑的锁屏,稍微调了一下配置。发现键盘比较一般,鼠标则是不一般的难用。14:25 发了 pdf 的密码。

笑点解析:“请注意区分解压密码和 pdf 密码,我们的密码不会错误,如果一个密码不能用,请尝试使用另一个密码。“

直奔 T1。第一眼看上去好像比较神秘,感觉有点慌。后来发现是把题目理解错了,应该是要让留下来的怪兽尽量少,这个看上去比较好办。

然后看 T2,发现 T2 题面又臭又长。生气,不看了。先把 T1 再想一下。感觉直接从大到小排序,之后能吃就吃就是对的。排序+指针,写了不到一个 k 就写完了,测了大样例就扔了,因为不会写这道题的暴力,并且感觉这个贪心非常对。感觉还有更厉害的做法,但是 \(O(n\log n)\) 能够过,也没细想了。现在是 14:45,感觉还行,没在 T1 上浪费太多时间。

之后通读了一遍题面,感觉顺序开题问题不大。开 T2,第一问似乎非常好做,直接二分一下就对了,贴心的 ccf 甚至没让我们对 \(p\) 排序,不知道是为什么。看了一下特殊性质,AB 性质区间是一段后缀,是不是直接输出 \(m-1\) 就对了啊?直接开写,过了 BC 性质的样例?看了一眼,发现 A 的样例是检测不到车辆时输出 \(m\),这下没问题了。不过 \(C\) 的样例到底什么情况啊,不能又被 不可以总司令 了吧。

这个时候 40pts 应该稳了。T2 不冲正解?想了一下,发现超速的区间是一段连续的区域。那把会被查出超速的车全部拉出来,是不是经典贪心啊?按右端点排序就可以贪心的取最右边的点了。那把 \(a<0\)\(a\ge 0\) 的分别处理,然后对前者贪心,后者特判一下,感觉很对。

开码。写到一半发现好像这两种情况没有什么本质区别,那干脆直接一起处理算了。不知道怎么简单判断一个区间有没有被覆盖过,于是套了个树状数组。15:40 之后码完的。开测大样例,怎么错了?贪心错了的感觉让我很慌,因为我甚至不敢保证正确性。当时确实比较紧张,但是由于这个贪心看上去非常典,我感觉应该不会有什么大问题。大样例错了我一时也不知道该怎么调,盯了几眼,猜测关于加速度计算的那一段有点问题。仔细观察了一下,发现对于超速区域的边界处理有点问题。分析了一下取等的问题,改改就过了。测了大样例跑了 1.6s,感觉比较危险,就写了个快读。发现卡到了 0.8s 就扔了。

现在是 16:00。感觉 T2 比较显然,虽然有些细节但也不是很难,加上 T3 的 dp 看上去比较典,因此决定直接冲 T3 正解。发现转移只有两种,就是放弃 \(i\) 的贡献,直接从前面状态转移或者从前一个和 \(i\) 颜色一样的数字处转移,具体是和它涂一种颜色,中间的数字都涂与 \(i\) 不同的颜色。但不知道中间部分的贡献怎么处理。于是直接先打了个暴力。打完暴力有想了一下,发现中间大部分数字贡献就是与相邻的数字相等产生的贡献,这个可以用树状数组 \(O(n\log n)\) 处理(后来发现可以用前缀和 \(O(n)\) 处理,但是当时没想到)。然后就只有 \(bel_{a_i}+1\) 这个点的贡献比较难处理了。设 \(dp_{i,0/1,0/1}\) 表示第 \(i\) 个数字涂红/蓝色,\(i-1\) 涂红/蓝色,那么就可以直接从 \(bel_{a_i}+1\) 处转移了。思路很通畅,想+写+调 0.5h 就过了大样例,感觉问题不大。时间是 16:30。

决定直接开 T4。T4 题面也是又臭又长,阅读理解之后发现不算新加的人(我将其视为机器人),那么只有 \(O(\log n)\) 个人可能成为冠军,而机器人的编号应该也是一段后缀。 \(O(log n)\) 判断人和一段机器人是否可能成功应该是容易的,那么 \(O(Tm\log^2n)\) 感觉也非常可做。其实这个分数已经比较可观了,但是我还是决定冲 \(O(Tn\log n)\) ,因为直觉告诉我这个东西不是很难想,并且我在考场上以为这个东西可以拿 100pts,AK CSP-S 的诱惑还是太大了。想了一会,感觉直接从下往上去处理一些东西,然后对于每个数字 \(O(1)\) 判断,对机器人求出合法后缀就很对。

感觉暴力也不好写,于是决定直接开写单 log。特殊性质 A 不存在机器人,感觉我的想法可能会错,于是把这个情况顺手判掉了。事实上这个决定是非常明智的。我大概在 16:50 的时候写完了整份代码,特殊性质 A 没问题,但是其他全错了。这是怎么回事呢?挣扎了一下,小样例过了,但是大样例一个没对。这个时候已经 18:10 左右了,写 \(O(Tm\log^2 n)\) 也不太现实,决定摆了。剩下 20min 检查了挺多遍代码的,希望不会出一些逆天问题。

18:30 收卷,估分 100+100+100+16=316。

upd:实际分数 100+100+100+16=316。

posted @ 2024-11-12 20:56  LiuLianLL  阅读(4)  评论(1编辑  收藏  举报