考试
开考后正常通读题目。T1 看了 2 分钟秒了,T2 看了一会认为需要先把期望转成计数,然后把贡献分类计算貌似有一定的分,T3 想了好一会感觉大概能写一个 80 的 dp,T4 好像是 CSP2020 T4 类似,比较简单。于是决定开题顺序是 1342。过了 30 分钟后回到 T1,确定思路是对的后很快写完。T3 又仔细想了会,做法正确性能保证,然后就是预处理两个连通块的距离有点奇怪,我当时考场上想了 20 分钟没想太清楚于是就开写了。用了 20 分钟写完其他部分,然后预处理又写了 20 多分钟,这部分代码大概 1KB 多。然后就是不断地调试。过了半个小时决定重构预处理的代码,后面改成了一个两行的暴力匹配,然后喜剧的是我把这个 \(\mathcal O(n^8)\) 的代码误算成了 \(\mathcal O(n^4)\),然后以为能够等价替代之前的 bfs,看到过了大样例并且跑得比较快就没管了。此时已经只剩一个半小时,我构思+写 T4 代码用了 1 个小时,然后调了十多分钟过了,最后还有一点时间检查。没有时间仔细想+写 T2 了。
估计:100+0+80+100。实际:100+0+30+100。
改题+总结
T2 有一定难度,但是单纯推式子的数学题我非常擅长,所以如果能留出足够时间我觉得我是能做出来的。下来改了 T2,T3 只去重写了 80pts 的代码。下午重构 T3 的时候预处理这部分我重新又想了一次,这次想通了于是 bfs 只写了不到十分钟就写好了并且一遍过了 80 pts。剩下 20pts 是转移状态的优化与剪枝,具体实现就是对平面做一个扫描线即可,我觉得如果是我重新来写我也只会写 80pts,因为这样性价比比冲正解高得多,于是我就看了别人的代码实现,知道怎么做了之后就没有自己去写。晚上剩下时间我写完考试题解后准备自己去找一些计数题提升一下。
简单总结一下今天情况。这场我的整体思路是没有问题的,开题顺序也比较好,缺点就是 T3 用时比较多,原因就是自己在发现已经想了好一会后想提速,于是在没有想清楚预处理的情况下写了代码,结果浪费了大量写代码以及调试的时间不说,最后还白挂了 50pts,如果我能更稳重一点,慢慢来并相信时间是足够的。那么我正常写完调完估计还能多出不少时间留给 T2,也许就还能写好几十分,因为今天 T2 推式子只推一两步好像就有接近一半的得分,并且这个题的所有档的分都非常好写。所以在后面的考试中我首先要给每个题一定预留时间,然后再根据实际情况进行调控,而不是看着时间不是很多而下意识做出不理智的抉择。