考试复盘
进场读了下题,T1 很简单,并且后面三道题都挺可做的。因为可以任意交换,直接令当前串字典序最小,其它串字典序最大,然后比较一下就完事了。因为字符集大小只有 \(26\),直接开桶模拟就可以了。发现不是很好写,想了一下其实只需要判断一下当前串字典序最小的字母的字典序是否大于其它串字典序最大的字母的字典序就好了,证明模拟一下就行。然后就写了这个,小样例过了,大样例开始 WA。瞪一下发现我 <=25
写成 <25
了,改了就过了。看了一眼时间,9:00。
然后细想 T2。感觉是个不难的题,根据操作模拟一下,可以得出每个变量最终值要么是一个布尔常量,要么和另一个变量的初始值有关。如果变量的最终值等于它自己的初始值取反,就把它设成 U,然后计算依赖它的变量的值就好了。
当时草稿纸上图画错了,模拟了一下看上去依赖成环的时候需要基环树上 DFS,写了下这个做法,然后过不去第二个样例。发现对拍很好写,写了个对拍 Hack 掉了这个做法。9:40。
出去上了个厕所冷静了一下。发现这个不是个基环树,而是一个类似带权并查集的玩意。改成了这个版本,过了前面两个样例,测第三个样例,最后一个点和答案差了 \(2\)。继续对拍,发现有些细节没想清楚,改了改还是错。改了三四个版本,始终过不去第三个样例。一看时间,10:30 了。这个时候感觉思路有点混乱,决定先看一下 T4。
T4 发现 36pts 暴力非常好写。写了写发现样例输出 \(0\),一看循环变量写错了。调了一下小样例了,一测大样例,怎么又 WA 了?????发现它全部输出 \(0\)。然后发现竟然读错题了,连续跑步区间是 \([x-y+1,x]\),不是 \([x,y]\)。改了下过大样例了,11:20。
这个时候我觉得 T2 正解的优先级是非常高的。一来这道题已经有了看上去非常靠谱的解法,并且有对拍,就算做法出了点小问题,也可以很快发现。如果是代码的问题,我觉得我有十足的把握在一个小时之内调完 —— 更何况核心仅仅 \(50\) 行,比起平时的题目还要好调一些。我满怀信心按下 F10,对拍再次开始运行。几秒钟后,对拍运行停止了。我看向读入数据,发现 \(i = j\) 的 corner case 没判好。再次按下 F10,这次运行了十秒钟,调试信息仍然表明,现在的所有随机数据都 AC 了 —— 这下没问题了吧?再测一遍大样例,凭着之前对样例答案的记忆,看上去是通过了,我稍微松了口气。切回终端,发现对拍停止运行了。打开大样例输出,发现我记错了。这次是第三个点,和答案差了 \(1\)。再次看向对拍的读入数据,哦这次似乎是数组值没有及时更新?改了一下,F10,WA。哦,多组测试数据,没有清空?改了一下 F10,WA。最抽象的是,不管是哪个版本的代码,测大样例都会有一两组数据和答案不一样,但仅仅差了 \(1\)。
这个时候我发现好像有点着急了,需要冷静一下。我尝试在草稿纸上重新推了一遍做法,在代码里面添加了注释,确保我写出来的每一个语句都正确地实现了它的功能。继续对拍,终于拍出来了第一组 Hack 掉带权并查集这个做法本身的数据。
我发现这个结构并不是带权并查集,因为更新变量值是独立的行为,某次操作时,变量 A 的当前值会依赖某个变量 B 的初值。在这次操作之后的某次操作,变量 B 的当前值也可能会依赖某个变量 C 的初值,但是这不能说明变量 A 依赖变量 C 的初值,也就是说,依赖关系不能合并!!!
尝试重构了这一部分,发现还是过不去拍,因为有个细节又写挂了。再次运行对拍,这次撑过了十秒,二十秒,三十秒......一想到 T3 还没来得及看,我来不及多等,在等对拍的时候测了大样例。
还是一组数据。
还是和答案差 \(1\)。
12:30。
我望着还在运行的对拍发愣。又过了不知道多久,对拍终于不动了。手推了一遍输入数据,我再次做出了错误的判断:被删掉的带权并查集是需要的。但事实上,看上去像带权并查集的东西只是最后求解时要用到的 DFS,仅此而已。我前面的想法没有任何错误。
要写暴力吗?
要看 T3 吗?
已经来不及了。如果丢掉 T2 的正解,两道题加起来最多不到 100 的分数。
重构,对拍,测大样例,WA......唯一不同的是,对拍不报错了。我看着它慢慢通过 100 组,1000 组,2000 组......
12:57。
12:58。
结束了。把代码保存完毕,关闭 IDE。12:59。
13:00。
结束了,这个赛季。
总结 & 反思
被平时训练的状态骗了。
我太熟悉想出做法,写一写,调一调就能过所有样例的情况了。不管是 ACM,CF & AT,还是平时联考都是如此。就算是状态最差的时候,我也仅仅是想不出题。记得有几道 3kb,4kb 的题目,我写完一遍过样例,再一遍通过。代码能力永远是我最自信的部分之一。
我怎么也没有想到在 NOIP 考场上,我会花上两个小时,去调一个做法里面的代码实现错误。就算是在最后一个小时,我也有自信能够写完、调完。T4 的 36 分暴力,放在平时联考,这种代码难度的题我甚至会放到最后 10 分钟去写,印象里还没失手过。但是考场上我写了整整半小时。
我相信了自己,然后失败了。仅此而已。
但我也不知道连自己都不相信的选手该怎么打比赛。
所以究竟怎么做才好呢?
这次比赛给我最大的感受就是,心态距离正常的选手差太多了。
关键时候扛不住压力就是这种结果。从 CSP 2021 的 40 分,到今年的 THUSC Day1 的 34 分,再到今年 NOIP 的二等奖,我的心态没有任何进步。
而且我很难知道究竟要怎样去调整。
唯一的好消息就是不用去为了那点渺茫的高一进省队的希望打乱自己的训练节奏,去学一些只有四川省选考的内容。这一年可以潜行钻研数学了。
标签:大样,发现,变量,NOIP,19,一下,2023.11,查集,样例 From: https://www.cnblogs.com/Meatherm/p/17842897.html