CSP 2024 游记
CSP 2024 游记
初赛发挥得还可以,J 组 92.5,S 组 90.5,大家的 J 组都比我高。
day -1
在正式比赛的时间去正式比赛的考场和座位做了一场模拟赛。
发现楼下机房的 Dev-C++ 的编译器竟然是重新配置过的,是 winlibs GCC 13.2.0,比我的电脑配置还好;听说 vs-code 也是配置好的,连 NOI 虚拟机里的也配置好了。
于是火速把我电脑的编译器更新了一番。
然后又学到了新的 gdb 技巧:
可以通过 *a@100
查看 \(a\) 数组前 100 的值,以免数组过长看不了。
14:20 开题!
T1 是水题,但 \(n\log n\) 做 \(10^6\) 有点卡常。
之后的时间一直在凹 T2,还以为这场比赛不会很简单,在想什么单调队列求最值,没想到竟然是简单 DP。
T3 我的做法离正解已经很接近了,可惜时间分配不合理,最后也没想到原来是一个简单的性质,而不是复杂的数据结构。
T4 没开,正解是把冗长的题面等价转化为圆方树上计算信息。
最后也没有好好检查,成功拿到了倒数,大家都把前两题切了。
这场比赛告诉我:
- 不要死磕一道题目,去年的 CSP-S 就是这样死的(指做了 3h T3 最终因万能头下取变量名为
next
而 CE)。 - 一道题的预计时间用完了就不要再凹了,赶快开下一题,除非其他都做完了。
- 想清楚了再写,不要写一半写不下去了又重来,就像这场的 T2,应该多分配一些时间在后面的题。
- 可能需要多预留一些时间用来检查。
- 正式比赛一般不会是很难的算法。
day 0
今天自行复习。
我先把昨天的题改了,然后看了一些近期写的学习笔记,复习了一些算法(然而发现正式比赛都是一些人机算法)。
day 1
我们初三的8级金钩爷没报 J 组睡到中午,还少交 300 CNY。J 组八点半开始,我也是多眯了一会儿。
早上在机房写了一些模板,什么普通快读快写(没有 fread
的那种)、线段树、fhq treap、最短路、kmp 之类的。
八点十分进考场,8:27 可以开始动机器,然而解压密码 8:29 才发下来。
前两分钟先把 IDE 配置了一下,开了 -Wall -Wextra -Wl,--stack=512000000
,改成了护眼的黑色背景,同时把快读快写默写了一遍,有点紧张,打得不算快。
虽然和 S 组的座位不同,但是键盘却是同款的 Backspace
非常响。
这次比赛的策略是顺序开题,最后剩半小时以上用来检查。
先开 T1!发现是水题,把每个字符串扔进 map
里就做完了。
开 T2,发现是 c++ 语言练习题,直接模拟,用二维数组标记。
前两题都光速做完了,于是开 T3。
我先写出了每个数字所需的火柴棒,发现 8 这个数字需要最多,要 7 根,位数小的肯定优,于是考虑后面全填 8。
我心想这不就是诈骗题吗,再看大样例,发现并,没有大样例,于是更加印证了我的猜测。
考虑前面的数字怎么填,它跟模 7 的余数有关,发现自己想的不太靠谱,于是用 __int128
写了一个 DP,得到了前面填什么,于是这题也飞速做完了。
此时大概是十点,我开始做 T4,看了半天才看到 \(10^2\),于是想写一个 \(nr\) 的做法。
去了洗手间。
想到在每种颜色记录它上一次能从哪个序列转移,只要计两个。然后要满足长度限制,搞个队列弹掉前面的即可。
最后一题调了很久才发现是记录输入序列的 vector
没清空。然后写完了,此时是 11:20。
后面就是检查时间,放到虚拟机跑了一下。
最后打开了 dino 和 surf。
结束了。
中午发现有人 T3 写了 DP,有点搞笑。
突然想到 T4 我把 \(10^2\) 当成 200 了,两倍常数啊!!!
day 1.5
中午不知道搞什么,13:30 他们就把我吵醒了。
回到机房,又打了一遍快读快写,发现上午 T4 竟然是蓝的,看来下午要难了。
14:15 进考场,周围坐的都是大巨,依旧是顺序开题,这场全程没去洗手间。
开 T1,排序然后计一下剩余个数,想了一下正确性感觉没有问题,直接扔掉。
看 T2,什么物理题?考虑讨论一下加速度,转变为点覆盖区间的问题。想一下可以按右端点排序贪心地选,调一下,过大样例了!扔掉。
开 T3,一眼 DP,把一个点选蓝选红分别考虑,然后用线段树优化。然后,错了?
别急开始调试,调了半个小时,终于发现线段树单点修的时候没有把路径周围的点 \(downtag\),改一下,过大样例了!
发现红蓝是对称的,只保留一棵线段树就好,这时我认为 \(O(n\log n)\) 是可以过的,于是没有再优化。
我赶快去开 T4,此时剩下一个半小时,T3 调得太久了,不过还在预期内。
T4 简直就是阅读理解,最后一小时,会了 \(O(Tnm)\) 的暴力,拿下 40pts。
此时最后半小时,准备放到虚拟机上跑,感觉没什么事情,就把虚拟机关掉了。
18:15,最恐怖的事情发生了,我打开 D 盘,发现我的文件夹空了?我以为我误操作了,于是便 ctrl+z 结果还是没用。
这时我突然发现我打开的不是我的选手文件夹,而是名为 CSP-S2024 的下发数据文件夹,我赶紧打开选手文件夹,结果发现里面真的空了!这时我 ctrl+y 也无济于事。我当时还以为我的文件是拖进了虚拟机里,而不是复制的。
但是还好打开虚拟机,我的代码都还相安无事,谢天谢地!悬着的心落下了。
结束了。
这告诉我们一定要备份你的代码!
day 2
去 luogu 自测,寄!
J 组 T4 的两倍常数果然使我 TLE 了,开 100 就 AC 了,但还是跑了 1.8s。
S 组 T3 有线性做法,jzoj 的自测把我的线段树卡掉了。
其他都正常。
总结
今年 CCF 不在第一时间发代码,发了哈希值或带密码的压缩包。
估分:
- J组 100+100+100+(70~100)=370~400
- S组 100+100+(75~100)+40=315~340
这次正式比赛我学到了什么:
- 多测一定要清空。
- 数据范围不要看错了。
- 可以多想想最优解法,看自己认为的正解能不能优化。
- 不要过于相信自己的常数,时间复杂度不要算错了,就像这次多测要乘一个 \(T\)。
- 记得备份代码,去虚拟机上跑一遍肯定没错,还能防止 CE。
- 这次时间分配还算合理,应该是题目不难的缘故,难题一定要学会取舍,部分分见好就收。
by dcy。
2024.11.02
update on 2024.11.04:
出分了
J=100+100+100+60=360
S=100+100+100+40=340