背水一战:CSP-S2025 游记
Lithium_Chestnut
·
·
生活·游记
\text{Day -inf}
写在前面。
这是一场我整个生涯难忘的 CSP 收官战,也是我目前整个生涯打过的唯一一次绝杀。
写这篇游记的时候时间不是很充裕,就先写复赛部分,初赛以后有时间会补,先给自己把坑挖上。
\text{Day -2~0}
这几天 whk 还是比较忙的,高三老登还要复习 10 号名校联盟,所以尽量压缩时间晚自习抽空看看以前写的笔记、算法板子之类的。
周四详细复习了 kruskal 并查集路径压缩,寄希望于周六会考。
考前一天上完晚课就回家了,开始无脑乱敲板子。
\text{Day 1}
早上起得比较早,接着敲板子(其实是麻木了除了敲板子不知道干啥了。中午十一点左右出发去到考场,路上看到数竞出成绩,依旧前排二等。
到了考场开始招笑了,排队一直卡在门外不让进去,于是开始水 LA 群,结果看到 cz 说辽宁上午 J 组收代码的时候把 seat 设置成 set 了,导致全省的代码都没收上来,现在在疯狂补救所以比赛要延时了,草台班子这一块。和 @yeyou26 老哥聊天,说自己一会不行进去先睡 2h,反正 LN 有分即可进 NOIP。
无聊在 pyq 里挂了预言:希望 A 是和去年一样水的签到题,B 来个部分分给足的大模拟,CD 来一道好想的图论,不要考字符串,不要考恶心的数论。
突然想起自己字符串哈希很久没看了,翻了一翻,虽然不想做字符串就是了。
14:42,终于进了考场,结果刚坐下准备敲板子告知就延时 15 分钟到 18:45,板子根本来不及敲啊兄弟。于是 2 分钟先敲了一个 dijkstra。
开始先看题,A 题面很短,一看就是某种神秘贪心。很久没做题了(上次做题是 3 月份 NOI 联合省选)不确定自己还搞不搞得出来很难的贪心,于是没有着急下手,~~反正 LN 有分就能进 NOIP~~。
看到 B,翻来覆去求 mst,今年图论题放的好早。一看 $k=0$ 有 $16$ 分的纯 mst 板子,那很送了。
看到 C,怎么是字符串。印象中 CSP 很多年没考串了,这下完蛋了。D 是神秘题目,看了一眼就先扔了。
$\text{26min}$,评估完题目后直接决定先去敲 B 的 mst 板子,因为纯送。一发 kruskal 直接拿下 $16$ 分。然后简单看了看特殊性质,直觉告诉我好像直接把所有乡村建进图里就行了,但是又疑惑好像会有不选乡村的情况。没有贸然下手。
$\text{57min}$,回去看 A,发现按人贪心和按社团贪心都显而易见有反例。没往深了想,先写了一发三进制枚举,反正留着后面对拍也要用,此时写了 A 题 $20$ 分。
靠,怎么一个小时过去才 $36$ 分啊。退步好大。记得去年同期已经 $140$ 左右了吧。
$\text{1h11min}$,补了 A 题的特殊性质 A,这个直接随便正着排序选一半即可。此时 A 题 $25$ 分。
看了 C,感觉不太好写,于是先跑去 D 看看有没有能写的分,发现有一档 $n\leq 10$,直接想到 `next_permutation` 枚举全排列。很快写完,但是第二个大样例一直差几万多。不知道哪里错了,调了将近半个点给自己调红温了,上厕所也无果。
$\text{1h49min}$,终于发现每次 while 进来的时候重新排序后员工的耐心值不是初始值,而是我上一次排序剩下的。这么智障的错误跟多测没清空没什么区别,改完之后就过了第二个大样例,此时 D 题期望得分 $8$ 分。
这都拿的什么小破分啊。感觉上半程打得很烂,一阵子没写代码果然码力还是下降了许多吗。
回去写 C,感觉正常暴力只能拿到第一档分,于是准备硬搞哈希优化暴力,复杂度应该可以降到 $O(nqlen)$,码板子用了一些时间,~~哈希 base 值选了 233~~。
$\text{2h37min}$,过了超级小样例,发现没有大样例,自己手玩了几组感觉没啥问题,此时 C 题期望得分 $25$ 分。
这时候已经有些想摆了。打了这么久一看得分 $25+16+25+8=74$,还不一定都不挂分。
$\text{3h01min}$,距离收卷只剩一个小时了。回去莽了一手 B 一开始那个想法,把乡村和图中的每个节点都连接加到图里直接跑 mst,想了半天还真没有反例。不是很懂,但是可能 B 题现在有 $48$ 分了(?),我对于这部分的分并没有把握。
好像能上三位数。要不摆了吧。其实到现在都没有好好思考 A 的正解。
开始在四道题中随机游走,看看有没有漏的分 & check freopen。
$\text{3h47min}$,本来已经开摆了,结果上了个厕所突然间有了个 idea,A 好像可以按差直接贪心,想了几个都是对的,但是就剩 13 分钟了,这哪里写得完?不管了不管了,写吧,哥们就是莽。
$\text{3h56min}$,还真让我写完了,结果一测大样例全错。完蛋。又准备摆。结果突然想到取值的时候应该是取差值 max 中的 min,而不是 max 中的 max!开始改代码,这个时候手已经抖得厉害了,急急急我是吉吉国王。
$\text{3h59min}$,赶紧测了大样例 3 和 4,不敢测 5 了因为马上收卷,但是 3 和 4 都对了。
$\text{4h}$,监考喊收卷的同时改完 freopen。一秒都没有多剩。
出考场我整个人都是抖的,其实这场的结果并没有那么重要,但是实在是太惊险了,从来没有这么有意思过。
打开谷群看到了 A 一样的贪心做法,晚上吃饭的时候和 zmq 聊天,发现 B 我的建图方式并没有问题,不用的乡村建在图里当叶子节点也可以。
发现自己考前的预言一条都没中。无敌了。
期望得分:$100+48+25+8=181$。
晚上发现 A 自己的写法不加 `else` 能过大样例但是会炸。我是真想不起来自己加没加了,只能听天由命。
---
$\text{Day 2}
复写了所有代码,默认 A 自己加了 else,民间数据:
- 洛谷:100+48+25+8=181。
- 云斗:100+48+60+8=216。
- 核桃:100+48+25+8=181。
- 梦熊:100+48+45+8=201。
有些地方 C 的数据还是水了。
\text{Day 5}
提前发分。卡申诉 bug 查到了成绩。
xtl 上看省排名 $29/585$,这轮稳一等,成绩也还蛮好看的,运气比较好。
可能擦线没有 7 勾,不过没关系,7 勾乃身外之物。
NOIP 加油。
游记比较草率,写的很着急,以后有机会补一补细节。完结撒花。