2024CSP-S 游记

· · 生活·游记

考炸了!

最大的败笔在 T4。

考场电脑的时钟与现实相差了大概 1h13min,对时间的判断不是很精准。

开考 20 min 大概看了四道题,T1,T2,T3 感觉都很简单,T4 很神秘,但感觉拿到 80 多分应该不难。

然后开冲!

T1 10min 解决。

T2 30min 写完。

T3 发现一开始的那个 dp 的想法不是很行,然后想了一下,其实只要记录上次颜色变化的位置即可,于是有了一个 O(n^2) 做法。

然后想办法优化一下这个东西,发现其实每次进行的操作就是区间加,单点 checkmax,全局最大值之类的操作,然后我直接写了一个……堆?!不是很明白我是怎么想的。凭空增 \log。

不涉及值可能变小的情况下,全局最大值可以直接用变量维护。

T4

这时候时间应该是 4:00 左右,我吃了点东西,上了个厕所,调整了一下状态来看 T4。

心里朦朦胧胧有一个 O(Tn\log n) 的做法,就是维护一下有没有不确定的,上传的答案是多少,当前坐标和是多少之类的。

心想还有 2h,不用着急。

我最后算了一下答案可能的范围,n^3 级别的,然后我认为要开 int128。于是没有使用我常用的关闭同步流。而是写了快读与快写。

但我发现要读入那个 d 矩阵,需要读入若干个 string,不能用 scanf,于是我又把同步流关了,删了快读,改写了快写。

然后就一直调。然后不断错,又不断改。最终我心中终于有了一个完全确定,正确的做法,但时间已经不够了。我最终极限地在 18:29 把我的代码改得可以过 A,B 性质,然后火急火燎的打文件,删调试。

但!我之前不是写的快写吗,把最终每组数据输出的部分写完了,换行用的 putchar,然后为了方便调试,把这一行注释掉了,但最后注释回来时,没有注意到这个东西啊,啊,啊,然后输出就乱掉了。我甚至还测了一下样例的第一组,发现输出好像有点奇怪,怎么第一行,好像是空的啊,但转念一想,可能是显示框的问题,对吧,这个,于是,然后,然后,然后下考后我就猛然醒悟了。

最后的总结:

我还是太菜了。

不要过于自信。对于一些不清楚的地方,一定要想清楚,写清楚,不要直接朦朦胧胧的上手去写。

注意时间。考试最后 10 分钟不要动代码了。好好检查文件名,看看代码的清空,调试删没删,还有输出的格式对不对。

对于这种抽象题,最好把一些具体的细节写在纸上。

NOIP rp++。