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

posted @ 2024-11-02 19:32  dengchengyu  阅读(18)  评论(0编辑  收藏  举报