CSP-JS 2024 游记
Part 0 论复习时的精神状态
其实根本没咋复习,前面几天感觉CSP-J一等CSP-S二等没啥问题,所以感觉摆烂了。看了眼模板,前面几天事堆满了,就没啥心情。每次坐下来复习就感觉没啥好干的,因为要干嘛干不完,不干感觉没事干。想着快考试吧。
Part 1 Morning CSP-J 3.5h
T1 扑克牌(poker) 100pts
由于掌握先进知识(set集合),直接秒了。就是一道去重题。
T2 地图探险(explore) 100pts
开局发现模拟。居然出了点小毛病(没想到机器人可能走重复的点),不过改过来了。也是获得满分。
T3 小木棍(sticks) 60pts+
看到这题感觉脑袋空空。看了特殊条件,就想着拿特殊条件先骗点分。结果居然瞅出来了:一个说n≡1(mod 7),一个说n≡0(mod 7),这一看就是有事啊,肯定和7有关。看了木棍条数,离大谱:8的木棍刚好是7。于是推出来先用n mod 7的结果处理,分类讨论。结果一个不小心少推了一点点,导致可能只有特殊条件60pts对,所以大概就是60pts了。
T4 接龙(chain) 15pts~
考试的时候感觉一脸懵,把问题拿下来离线用了个爆搜(去年是dfs今年乱写bfs)。估计也就15pts。
Part 3 Afternoon CSP-S 4h
T1 决斗(duel) 100pts
这题感觉巨麻烦,如果暴力模拟必定会TLE(Time Limit Exceed,超过时间限制)。当时立马想到map,而且map还可以擦除。但是考了迭代器咋用,刚开始想着从it往下走,结果一下傻了,因为erase返回的是下一位有效的迭代器。然后发现从begin开始没啥影响,所以就从begin开始了。样例拿满了,估计整个也就满了。
T2 超速检测(detect) 90pts~
想到正解但是long double精度炸了。大概会掉点分吧。
开局没有想到车辆被检测超速一定是一个区间,然后划了线想半天终于是发现了(跟脑子木了似的)。然后先用O(n^2)求了所有点的检测区间左右点(其实已经有点分讨了),记下来了所有超速车的检测区间。然后发现一个极其严重的问题:第二问整不会了。当时真的我现在都想抽自己,画半天总算看出来贪心区间选点问题了。然后一个O(n log n)右端点排序,稍微推了推(远古算法忘了点)就求出来了。
然后就在想前面咋求。因为其实看到特殊条件了,和那边CSP-JT3一样本来想做特殊的FULLpts,结果发现磕着磕着把正解弄出来了。发现其实这个区间画出来之后根据加速度的正负可以看出来,只可能超速段在最左边或者超速段在最右边。于是手写二分求两边端点,时间复杂度降低到了O(n log n)。问题成功解决。
最后的浮点数误差也是无法避免。(查出来不是浮点误差)
T3 染色(color) T4 擂台游戏(arena)
这两道题之所以放在一起说,是因为一道题蓝题一道题黑题,骗个分都难,直接送走了,做都没做。T2调了整整3.33h(恰好3个小时20分钟)。题读了。字都认识题不明白(紫题黑题就会出现这种情况)。
Part 3 总结
严重超出预期了(没想到CSP-ST2能推出来,预估的是CSP-S140),很开心很开心。CSP-J 275pts,CSP-S 190pts。这两个分估计能拿个CSP-JS一等?求BJ分数线。
本人菜的要命,其实连绿题都不好说做的做不出来。实属把我攒了12年的功德(其实啥也没有)给用完了。
Part 4 谈谈比赛中我最喜欢的一道题 CSP-ST2
这道题在我看来是目前为止最能代表我水平的一道题(自我独立思考)。做出来这道题我非常非常非常(非常的∞次方)高兴(无法用语言表达)。
这道题其实是关键的一道题。我在调最后O(n^2)->O(n log n) 的时候,二分板子好久没写过基本忘了,调半天老看到2939 939(现在看到这两个数就会生气)。因为当时如果整不了log n就是70分。我就在心里疯狂暗示:你啊你,快调吧,快想吧,你想卡着线吗?到时候差几分自己就不高兴。
所以直接提了20分,差不多了一等应该。比赛最后发现没特判,因为瞬时速度公式在速度到负数(0)的时候会变成虚数(-nan,sqrt(-1)了),所以得特判一下返回的l是否符合要求。
有惊无险啊调完了真的,看着detect5.out的数变成了熟悉的detect5.ans的前两个数,心里止不住的高兴。
思维难度非常高的一道题目,去年绝对不会,现在看起来感觉和去年大有不同了。也是看到了一年的付出究竟给我带来了什么。去年CSP-J才120pts,今年暴涨到2倍多。去年CSP-S没考,今年开局190pts。
Part 5 结语
感谢爸妈,感谢帮助我的教练,感谢我自己。继续向前吧,也是加了一把油。接着冲!