CSP-S2021 游记
今年在九中光华校区考的 CSP。
赛前一周
做了几次 CSP 模拟,发挥都不错但是经常巨大多挂分(指 CE 或 MLE 等),后来被教练要求好好反思。
心态一点都不稳健.jpg
考试当天
考试是下午于是上午睡大觉,中午起来吃了个午饭就叫了个出租车往考点走了。路上巨大多堵车,到考点吹了一会儿水就进考点了。
(在门口收获 cxr 神仙的棒棒糖 \(*1\))
在考试楼下排队进考场。queue 的时候看了一圈发现周围除了(初中、高中)同学大部分都是不认识的老哥,感慨了一下 oi 的迅猛发展就进考场了。
典中典开考之前不让动键盘。监考老师反复强调各种注意事项,然后就开考了。
(中间听到有个高一同学问 DEV-C++ 5.11 的安装包的位置,后来不知道他用上没有)
开考之后发现键盘巨大多难打,低版本 DEV 也果然不支持 c++14,吐槽了一下主办方就去看题了。通读了一遍题面,感觉 T1 是个考过的原题,T2 是个神仙 dp,T3 是个贪心,T4 是神必网格图性质题。然后感叹了一下今年没有签到题。
然后就对着 T1 写某个原题的代码,大概写了 \(0.5h\) 就写完了,然后马上过了第一个样例。第二个样例跑出来比答案大(嗯?),然后手算发现程序没有写错,于是重新读题:
……廊桥的使用遵循先到先得的原则……
心 肺 骤 停,读错题以为是使用最优策略。于是把代码删掉了用来最优化的部分,大概在 \(1h\) 的时候过掉了这题。
然后去看 T2。最开始想的做法是维护栈里面的 \((***((*(\) 状物,但是这个要对 \(((\) 和 \((*(\) 的东西分类讨论,然后复杂度就寄了。
冷静了一下,考虑了一下 \(k=0\) 的做法,发现有个经典区间 dp 做法,可以直接套到这个题来。
然后就是 coooooooooooooding,中间经历了算重、算漏、算重并且算漏(这个过了第一个样例),以及优化掉一个 \(n\) 的巨大多调试。总而言之,大概就是 \(\mathcal O(n^4)\) 写了 \(0.5h\),\(\mathcal O(n^3)\) 写了 \(0.5h\)。
写完过大样例就已经过去 \(2h\) 了。这时候就有点慌了,快速开始看 T3,然后手动模拟了一下,发现第一次操作之后就两边独立了,可以直接贪心,然后就对着这个写,大概在 \(2.5h\) 的时候过了大样例。
然后检查了一下前三道就去看 T4 了。手推了一下感觉会有一些分割线状物,然后会变成一块一块的,然后发现把每一块染色后相当于一个最小割(我要 AK 了.jpg)。
然后就是写写写,前四个样例都很快通过了。第五个样例:F11->waiting->waiting->waiting->嗯?->waiting->出答案。
心 肺 骤 停。加了个输出时间,发现跑了 \(13s\),然后以为是机子太慢,但是打开配置一看发现海星,然后用虚拟机测了下时发现也是这个速度。
没救了。又去检查了一下前面的题(这个时候发现 T1 有个 off by 1 error)。然后就开始看数据范围找性质。
然后快速反应到 \(k=2\) 就是个狼抓兔子,然后发现 \(k>2\) 不太能直接转对偶图,最后 \(1h\) 就一直在想怎么做 \(k>2\),无果。
出来之后问了一下发现都是 360 大众分,然后就安心吃饭去了。
最后出分 95+100+100+60=355。
总结:技不如人,甘拜下风。