CSP2023 游寄

日期:
標籤: journal

Day 初赛

初赛没啥好记的。感觉挺简单。

Day 0

非常颓废的一天,白天总共只写了一道题:建造军营,主要是在复习 tarjan 相关的东西。

本来想看看一些过去真题的,然后随便挑了一道括号序列,不会做,还回忆起了当年 T1 都不会,两个多小时冲 T2 没冲出来的痛苦记忆。

晚上出去骑了骑车,然后又激情 Hypixel 起床战争,单挑赢了一把。

Day 1

每年 S 组都有几个看着年纪不大的选手,感觉就仿佛看到了当年懵懂无知的自己。小学的时候学算法竞赛,踌躇满志,而现在到了高一,也还平平无奇。

考前去红旗连锁购买了农夫山泉,以增加 rp。

感觉嘉祥小学还是挺整洁美丽的,电脑也还不错。

发现 NOI Linux 下好像 vim 里按 C-s 会寄掉,不管映没映射???可能和 GNOME 那个终端有关吧,不知道。所以考试的时候就经常有手贱按了 C-s,然后杀掉,然后恢复,然后删 swapfile,感觉代码体验不好。而且发现 Ubuntu 中 vim 所有的临时文件,包括 swapfileundobackup,默认都是在当前目录下的,感觉就很恼火啊,自己也忘了怎么配置,以前在 Arch Linux 的时候都不会这样。

开考后,A 题读完感觉是不是读错了,反复阅读,感觉 S 组不至于这么简单吧,最后在快一个小时的时候才写完了这个感觉 CF 评分 800 左右的题目。时间复杂度 O(105n)O(10^5n),反正能过。

然后通读了 BCD,感觉 C 题出大模拟就很傻逼,感觉 CCF 是不是没钱买题了。为了防止大模拟用太多时间,我还是先去想 B。先考虑了 O(n2)O(n^2) 的做法,枚举左端点,然后用个用个栈维护没有消掉的元素,往右边扫就行了。然后又意识到,如果一个段能被消完,要不就是去掉两头的剩下的是能消完的,要不就是两个或两个以上的段能消掉的段拼接到一起。然后就想到维护每个端点往右第一个能消完的位置,感觉还是比较自然的,复杂度 O(26n)O(26n)。最后写完 B 花的时间好像和 A 差不多???然后又打了个数据生成器对拍,感觉应该不会挂分。

又来冲 C,好像我左右两边的选手好像都先跳了 C 去写 D 啊。C 数据范围非常小,n100n \le 100,全部用 std::vector 存,直接暴力扫好像都能过的样子。但我还是用了 std::map 来存类型信息,复杂度 O(n2klogn)O(n^2k\log n)。感觉挺好写的。

最后写 D,不太会,打了个 n20n \le 20 和链的部分分就没管了,感觉 300pts 应该还不错吧(

最后十几分钟罚坐,关掉虚拟机后总担心自己代码有没有什么问题,对 VMWare 的共享文件夹功能表示怀疑,总忍不住各几分钟去看一看代码能不能过编译,文件名写没写错之类的,后来索性直接比较 SHA256 了。

发现大家好像考得都挺高,有一堆 400 的。

感觉小周老师押的有点准:

今天就捡重要的,说一个:

最近几年的CSP-J组的出题风格,在和CSP本体不断靠近。

意思是什么呢?

就是说,CSP-J的题,大几率会有一道技术类的模拟题。

前年 CSP-J ip 判断,去年 CSP-J 表达式解析,今年 CSP-S 内存对齐,明年考什么,【数据删除】。

晚上和 tzq 激情 Hypixel 联机,赢且仅赢了一把双人起床。

Day 2

去洛谷上测,305,D 怎么挂分了啊啊啊啊啊啊。