CSP2025 游记

· · 生活·游记

省流:完全坠机了。

\text{Day -INF}

打了什么比赛?

信心随机被摧毁。一些杂项:

坐标:福建师大附中润德楼 6 楼 601 机房 11 号。

根据 23&24 年难度,保底 200,目标 300,冲刺 300+。没 200 就真坠机了。

从 \text{Day -5} 陆陆续续开始打板子。

\text{Day -3}

上午神秘省检要求到校,去听了一节英语课知道没被抽到就润了,怎么这么早就开始半期复习了啊。

接下来就是打板子 + 写了前年洛谷 NOIP 模拟赛的题。

下午衅心赛!想用 Linux 结果网络坏了?去做了 div2,300 了。但是最后一分钟还在调,考场上肯定不能这么干,但是 T4 输入格式写错挂了 20。晚上看了 div1,四题好像都会做,似乎 div 1<< div2?

想到第二天要打板子于是晚上加紧把 div1 和 div2 都订正完了。

\text{Day -2}

把剩下一半的板子差不多打完了,弃了一些不会考的,以及 LCT 实在写不下来对着抄了一遍()

\text{Day -1}

上午收了个尾,然后试机,知道了一些好用的命令。拼手速开 Linux 改 ip 还是有点抽象。

中午吃完饭被拉去投篮,投了无数次终于进了一个三分!

下午合法划水,印象最深的是 generals。合照环节好玩,ps 环节更好玩。from @Po7ed:

\text{Day 1}

早上起来手臂有点酸,鉴定为太久不运动导致的()还好不影响打字。

跳了两道蓝题写,然后发现其中有一道是 *2500。

碎碎念:

不要串串,不要数学,谢谢 ccf!

\huge\text{CSP2025 rp++}

进场前还是希望不要串串和数学,并且发表了 chaynflow 分数是我的两倍的预言。

监考老师:“……你们都是高手。”

开题。T1 第一眼感觉比较困难,仔细想一想发现直接优先选最大的然后调整就行了。虽然也是很快想到了但感觉比前两年的 T1 都困难。10 min 左右的时候写完。

然后 T2 第一眼也不会做,再看一眼想起来可以把 m 变成 n-1,会了 O(2^kkn+m\log n)(忽略并查集)的做法,思考了一下能不能过,觉得机子很快+ n 开 10^4 大概率就是正解,于是开写。

写完测样例的时候记错答案了导致没有发现乡镇和村庄是不同的,大样例错倒回去看才发现。中间突然想起来 T1 没写 freopen(冷汗)。写完发现大样例不满于是随了一个,要跑 0.6s 于是把 cin 换成快读,跑了 0.5s,但换成快读后根本没测任何数据(原因在后),也就是很有可能快读写炸了我不知道!

但考场上我可不知道这些,50 min 写完。噩梦的开始。

第一下拿到题面的时候其实看到有串串了,仔细阅读一下似乎不是很智慧的类型,于是开想。第一下想到的是 AC 自动机,然后并不可以把两个串连在一起于是胡了一个自己都笑的套 bitset 的重科技做法。然后又想起来了考前做的某道题会了 O(L\sqrt L) 的做法,但似乎没有任何用处。

好笑的是我很快想到了把 t 的公共前后缀删了,但对于 s 我没有任何这样的想法。于是就是徒劳的思考,由于没想到这个所以 q=1 会的也只是 O(qL) 的字符串匹配做法。

想了一会儿发现想法就去上了个厕所然后去看了一下 T4,看到排列的时候畏惧了,并且知道自己之前做过很类似的题目但完全想不起来状态设计。感觉不会很高的分数又回 T3 去了。

此时时间已经过去了 2h,已经写了的分数仍然是 200。此时本来想先写了 T3 的暴力,但我自认为比较好写于是还是决定先冲正解。但想 T3 还是没有任何有效的成果,在想 B 性质的时候做法也确实是把 s 的公共前后缀删去,但我并没有把这个做法拓展到正解的部分,并且我仍然想的是两个串分别跑,于是也是无功而返。

只剩 1.5h,而我 T3T4 没有任何分数。此时我脑子一热想出来一个 O(n^2) 的 T4 容斥做法,虽然我也知道这个复杂度肯定不是对的,但 T3T4 的没有分数已经让我感觉此时别无选择而只有先写(事实真的如此吗?),而写完也是理所应当地没过样例,但此时可以说是慌不择路了,思考了一下哪里假了就开始打补丁写更奇怪的容斥做法:f_{i,j,k} 表示前 i 天有 j 个放弃,其中钦定了 k 个的方案数。

上面这个状态定义显然是假的,而我也根本想不起来之前做过题目的状态定义,也无心分析,调到了 18:00,中间为了找错打了个指数暴力(这应该是这一段时间做出的唯一理智的选择),我意识到此时我封顶只有 212 分,从而做出了算是艰难的直接放弃 T4 而去打 T3 暴力。

如上文所说,T3 我并没有想到 O(nq) 的做法,因此我要获得 50 分还需要写两部分代码,但事实是我连 O(L\sqrt L) 的部分都没写完,最后 10min 发现有个地方变量名写错了但改完仍输出 0 0。

不得不回去检查 T1T2,而考后已经完全不记得当时检查了什么,有没有改动什么,有没有测大样例。最后不死心地去瞪 T3 暴力,但还是没有看出哪里有问题了。

以往的习惯是留半小时仔细测一遍大样例和各种命令,但这回连前面做题时候的大样例都是我人眼 diff 的,然后就这么有些潦草地结束了。

100+100+0+12=212

得到了 T4 的状态定义,记忆感觉在这一刻被唤醒了,就是这个!!但已经没有任何可以挽救的余地了。如果没有挂分的话 1= 和 noip 应该都是没有问题的,但哪怕是几十分的挂分呢?

回收程序发现自己 T4 很长不知道为什么,然后才想起来把没调完的正解放注释里面了。

没有听说 T1T2 有什么很容易挂分的地方,但想起来了没测大样例的问题,心慌。

\text{Day 2}

在听到 T3 把 s 去掉相同前后缀后马上就会了,what can I say?菜就多练。

\text{Day 3}

唯一成功是不用担心奇葩错误,比如 |t_{i,0}|\ne |t_{i,1}| 或者数组开小了(T2 我直接开两倍哈哈)。

一个极其悲伤的故事是 T3 O(L\sqrt L) 可以通过所有平台以及大样例,并且均在 0.5s 以内。调了半个小时的代码结果是哈希写错了!!!但还有一个问题就是我代码中 map 是直接访问的没有先 find 一下,所以会加很多点而复杂度爆炸(大样例 4 过不了),但应该也会有很多分/ll

机房出现了很多“给你扣 bangbangtang”。

\text{Day INF}

开始加训计数,怎么每一题都和 T4 这么像?

没挂,算是可喜可贺。但 T3 根号做法真的能过,生气了。先打暴力结局是不是就完全不同了?

\text{反思}

能力与策略问题对半开。

T3 没有想到去相同前后缀和接在一起、T4 状态没定义出来肯定是能力的问题。对于后者,数数是一定要加训的。对于前者,思维还是有些固化,并且没从特殊性质中得到启示,要多训一些类似的思维题。

其实如果专注于打一题,我不相信我做不出来,因为哪怕 T3 也有会的 O(L\sqrt L) 做法(应该卡不掉吧),而两题都或多或少见过套路或类似的题目,至少还是能想到这个方向的。

但为什么会反复横跳?很大的原因是没打暴力,导致最后一个小时的时候后两题的得分还是 0。暴力虽然可能会浪费一定的时间,但好处却非常多,比如让心里有个底和拿到 270+ 的不那么难看的分数。

之前的比赛策略一直都是先打暴力,而这次如此激进或许是因为认为至少要做出三题,之前则没有这样的想法,比如去年和今年的情况非常像,但去年至少有 50+28 的暴力保底,而可以以一种放松的心态地去冲 T3 正解。赛前已经告诉自己不一定一定要做出几题,但考场上还是没有践行。以后的模拟赛要严格践行先打暴力的策略,而不是一味地冲正解,比赛和训练是有很大的不同的。这次的风险其实特别大,比如最后没有测一遍大样例,也证明了只想写正解是不可行的,很有可能导致更大的失误。

而最后 1.5h 的不知道在干什么的状态也体现了心态上很大的漏洞,之前没有出现这样的情况,而模拟赛又难以感同身受,良好的心态永远是成功的基础。还好 CSP 只是 NOIP 的预演,今年我也只是初三,失误带来的仅仅是不能参加 WC,吸取教训为 NOIP 做准备,仅此就足够了。

过去已经凝固,我带着回忆向前。