为什么是游“寄”,因为确实寄了。不过说是游记,其实是在本校考的,严格来说大概并不是很游吧。

原本想写点背景介绍的,还是觉得太谔谔了。

八点半过去到学院那边比赛,本来还带了键盘,但是发现用不上。还带了 Aya Fumo,希望能保佑保佑我。

第一题

写题,第一题还是比较简短的。看了一会感觉是动态规划?DP 这东西很神奇,高中 OI 的时候,真的不太明白 DP,没想到大学的时候突然又有点领悟了,也是非常奇妙。

边写边改,一开始还是按照常规想法把答案所求的充电次数作为 DP 的值的,后来发现剩余电量这个比较玄学,难以把握,于是把它也做了一个数组出来。

写着写着,发现不对了,充电次数最优并不会导致剩余电量最优,而两个究竟要哪个最优是不好说的,所以说会有状态冲突,因此把这两个并列是不好的。

后来考虑到相对来说充电次数比较好把握点,也比较可控,于是就把这个也作为 DP 数组参数了,所以最后的数组是这样的 energy[当前到达的充电站][充电次数][总共所用充电时间],路途中是不用考虑的,只要考虑到每个充电站的情况。然后就用四五个 for 循环 for 进去就好了,又外及里,再加点判断条件和限制条件,就大概可以了。

因为我代码没存下来,因此也不好细说了。不过试着编译了一下,一开始总是爆神秘的错误,后来测试了一下,发现是数组开太大的原因,于是只好开前20%分的测试点的大小。然后提交,比较没想到居然就这样过了前两个点,小拿20分。

当时还是挺高兴的,觉得能赢。但没想到的是,这居然是我最后仅拿到的分数。

本来想着既然栈空间爆了,那么堆空间行不行,虽然有点忘记了 new 的语法,不过还好有带 cppreference 的离线中文版,小看了一下 new 的语法,开了个 515*515*10005 的数组。运行,首先便是肉眼可见的样例都卡好久。交上去,第一个 case MLE 了,后面的 case 一直 running ,也没结果,估计是寄了。

于是只好交之前的20分代码,另寻分数了。

第三题

接下来就是巨大的经典决策错误,两道题,一道是虚拟内存实现,一道是数据库实现,因为第二道题看着怪哈人的,第三题,虽然占的页数还更长,但是读起来比较友好。于是读完这两道题之后,就去做第三题了。然而事实证明,按照顺序做,才是正确的。

第三题还是给了框架要实现,这种一般算法竞赛还基本没见过,还挺新鲜的。还得要 cmake 才能编译,结果这个 csp linux 似乎并没有 cmake ,于是只好当场装。老师临时给的安装包还没有运行权限,还要手动加。然而给的用来编译的 sh 脚本也没有运行权限,难绷了。

写啊,存数据还挺快乐的,但是越写读数据就越觉得不对劲,又要把前面的写数据的结构给改一下。这时候开始,我觉得不对劲了,因为我来到了我的经典 CSP 地狱,数据结构套数据结构套数据机构。

最后算下来,我总共套了三层,hash_map 套 hash_map 套 vector,又是经典给我套晕了,而且这题还是 cmake 编译,用 vscode 还不好调试。不过这次,我里面都是套的指向数据结构的指针,大概算是进步吧(

然而还是越写越痛苦,最后觉得骗到20分就算成功,于是开始寻思就两个查询语句,两个变量怎么办。

苦思冥想很久,最后我的答案是,暴力模拟,于是一个个查询语句遍历过去,看看每个值是变量还是常量,然后再分别处理,最后就是写了一坨复制黏贴巨大屎山。在结束前的千钧一发之际,交上去了。

然后
……
……
……
RE

令人感叹啊令人感叹啊,20分愉快送走。

赛后碎碎念

赛后看了一下,我这个分数居然还能排到全国一半,周围全是20分选手,大概是我交得比较早,排得还挺前的?

然后在群里看了一下大哥们的发言,有一条令我震惊:“第一题贪心 第二题输出样例 十五分钟你就能拿120分全国前十”。随后了解到,第一题的数据有点烂,贪心也能过,而第二题甚至数据就有样例,学长曰:“经典骗分技巧,特别是 csp 的活动,ccf 的活动”

后悔莫及,悔不当初。不过最谔谔的还是放弃了第二题去做第三题,后面看排行榜,大伙都做的第一第二题,第三题只有一个大爹有分数,而且是100分,20分的都一个没有。还竞争时间呢,疑似有点高看了。第二题做的人倒是很多,尤其是听说只要输出样例就能那分,更加痛苦了。

只能说是经典了,好多次 CSP 都是写这些奇怪的数据结构套数据结构套数据结构题,然后时间就没了,然后也没写出来,分数也没得。完了,全完了,还不如骗分。遥想当年 CSP-S,也是第二天去磕第三道题了,结果也是没写出来,最后成绩像答辩一样。

只能说,这种题就是看着还行,写起来刚开始让人欲罢不能,结果最后就深陷其中,进退两难了。今后如果看到自己写出数据结构套数据结构套数据结构的操作,还是及时收手吧。只能说,水太深,把握不住。

我只能爬我好菜,对不起