CSP-S 2025 游寄

· · 生活·游记

省流:倒霉 + 寄 + 招笑。

day -1

在机房复习,怒斥串串,并表示 AC 自动机这破玩意根本就学不懂,遂放弃串串复习。

day 0

其实已经是 11.01 上午了。

坐车去考场,先刷了 30min B 站,然后因为头晕改听 BiBiPiano。到九江发现才 11 点,找了一家不错的饭店。

饭后来到钟点房。爸妈为了不打扰我休息带上房卡去长江散步,但房间的“人工智能助手”依托房卡来检验是否有人入住。于是每次它感觉有人在房间里的时候就会打开所有灯并播放欢迎语。

5 min 后受不了了,打酒店前台电话问能不能关闭这个助手。于是师傅帮我把它的喇叭的电源断了。到此距离考试还有 1.5h,我认为自己可以睡个好觉了。

但是但是,这玩意喇叭不响还是会把灯打开啊!关键它检测不到我的时候还会把灯关掉……终究没睡成好觉。

day 1

其实现在是下午,进考场了。

其实最大的感受是 CSP 的那种“神圣感”越来越褪去了。或许是因为没有看到九江学院挂起 CSP-J/S 的大横幅,也或许是因为学竞赛的时间长到有些无法忍受了吧。

甚至下载文件的时候都有些恍惚,仿佛这是一场普通的模拟赛。

开 T1。

感觉不再和前两年一样是送的了。认真想了想,先讨论所有人的最大值是否能够同时取得(这只需要所有唯一最大值种类不出现超过 mx 次),然后分别以 a,b,c 为“优选”作反悔贪心。最后 1h 才调完这题(足见状态有多差了)。

开 T2。

立刻想到直接跑 2^k 遍 MST。20min 后又想到可以只保留初始 MST 的 n-1 条边。认真算了算复杂度发现说不定能卡过去,而且保底有 80 分。

然后开始写,大样例 3 没过。有点心凉,认真检查了代码发现找不出任何问题。

于是放掉 T2 开 T3。开的瞬间心就凉透了,因为我不会串串,更不会 AC 自动机。立刻想到 O(nL) 跑路,于是开始敲哈希。因为考前两天复习到了 卡单大模数哈希 的题,于是开始敲双哈希(你敢信这个人在那天以前用的都是单哈希)。

但是好像没敲过稍复杂的双哈希……于是 1.5h 过去了收获了 0 个分。安慰自己少 20pts 又有什么关系呢。

剩余 1.5h,手只上有 100pts。当我忽然意识到自己考的是正赛的时候快要慌死了。开始大型犯糖。

我首先开始质疑自己 T2 算法的正确性。首先构造了一个边权全部相等的完全图,然后认为这么多边怎么可能只留 n-1 条。然后手搓了一个完全图的小样例,自己的代码成功挂了。于是坚定地认为这个做法就是有问题。(实际上是没有问题的!)

满嘴垃圾话地开了 T4,根本没有想题的条件了。况且我根本不配做 T4,直接 8pts 跑路(就这还写了 20 min 也是没谁了)。

出考场,先急忙找教练报告坠机。然后和同学分享我“精妙的”hack。因为我情绪激动 + 大家的情绪可能也不太稳定,成功说服好几个人。

于是坐车回家的时候继续满嘴垃圾话 2h,结束了荒诞的一天。

day 2

心情无比复杂,最想干的事情就是彻底完善昨天的 hack。

逛了 T2 题解区,还沉浸在 hack 里。但试了好几棵树之后发现造不出来。又仔细想了想,感觉好像 hack 假飞了?

想到不管怎么在乡村连边都是在原图上搞出若干联通块,然后联通这些联通块的最少边数和这些边的一个最小边权已经在第一个 MST 中给出了!

突然看到同学发帖关于这玩意,赶紧补救,但已经酿成笑话了。

不过迷点还没解决,我立刻重新敲了一遍我的 T2 代码,但这次连样例 1 都没过了。我想,不对啊赛时明明过了啊。

我想我最小生成树总不能写错吧,于是写上了 assert(s.size()==n-1) 把所有样例全测了一遍,然后在 3 的时候 fail。然后输出 s.size。哎哎怎么吃我边了,MST 怎么只有 998 条边。

经过艰难思考后终于破案。因为 std::set 检测两个元素是否相同是通过判断 !(a<b)&&!(b<a) 来实现的。我重载边的 node 里面的 < 时只考虑了 w,所以我的 set 里不存在边权不同的边……

于是也在此时“说不定拿点分”的希望破灭了,只能认清 80\to [0,16] 的事实。谁让我赛时连 s 长什么样都不去关心一下呢。

最后 100+[0,16]+0+8=[108,124] 了。招笑。

day 3

其实是 day 2 的晚上。

在东逛西逛的时候看到一句很戳我的话:

人生在世,还不是有时笑笑人家,有时给人家笑笑。

——林语堂

挺好的,毕竟初中几年正赛遇到的都是自己打着舒服的题,总要在正赛遇到些克自己的题吧。

NOIP 加油。