冯梓轩半期考试反思
考的还是太抽象了,不论是做题方法还是比赛策略上都有很大问题。
T1 还好,没花多久。
主要问题就是出在 T2 上。第一眼看到散点之间的距离就想到了虚树,也想到了如果把虚树建出来之后就是一道简单的换根 DP。问题主要出在建虚树上。我忘记了 \(O(n)\) 建虚树时也是只需要求 dfn 相邻的两个关键点的 LCA 即可,觉得两个 LCA 之间可能也会求 LCA,这样就比较麻烦。而且维护最右链时也不非要用 dfn 来判断关系,因为它是一条链,所以其实直接可以用深度判断一下祖先关系即可。然后求 dfn 相邻两个关键点的 LCA 也没有那么麻烦,可以发现 LCA 的深度就是阶乘惟一分解之后相邻阶乘的最长公共后缀,然后用增量式维护,每次多乘一个数,找到它的最大质因数,然后再在之前的阶乘里对大于等于最大质因数的位置求个指数和即可,因为之后的小于的和新加的指数都不可能同时存在。这样做其实就比较简单,但是由于我没有深入挖掘题目的性质就开始做,导致了做法非常复杂,需要用到可持久化线段树维护质因数对应指数,还要解决线段树上二分、找第一个出现位置等较复杂的问题,赛时代码来到了 6000 多 B,最后没有悬念的没调出来。
后两题就是纯属策略上的严重失误。T3 感觉做过,所以想等过了 T2 后再来回忆一下,然后就没有下文了。T4 感觉前后缀都上树比较不可做,也没想着把前后缀拼起来,所以准备暂时先放一放,然后暂时就变成了后面所剩的所有时间。最关键的是我为了做 T2 连后面的暴力都没有打,这显然是非常严重的问题,并没有及时止损,直接造成损失最大化。
这场比赛感觉主要还是因为一连串的失误堆积在一起导致了爆炸。主要问题有以下几个:
-
没有分析清楚题目,没有去想更简便的做法,有一点想法就直接开始莽,一条路走到黑,并没有换一个方向进行尝试。做题之前要想一想:有没有分析清楚性质?有没有更简便的做法?有点复杂要不要换一个方向?一定要在想清楚、找到相对简便易实现的方法后再去写,因为事实证明做法越复杂调起来就越困难。
-
时间分配要合理,不要一道题死磕,要及时止损。做题时要评估一下能不能在有效时间内做出来、做出来的概率有多大、做出来这道题和去看后面的题哪个收益更大,综合评判之后再决定要不要继续。如果发现过了很久都还没想出来、没写完、没调完,就要考虑先放下这道题去充分思考一下后面的题,把能拿的分拿全后再来看这道题,减小损失。一定不要把所有时间都耗在一道题上,这样可能收益和支出不成正比,而且如果没有做出来可能会比较慌,对心态影响比较大。其实赛后再去回忆一下 T3 也并没有用非常久的时间,自己多模拟一下过程就可以较为容易的发现结论,也并不难写。
-
一定要打暴力。实在做不出来时可以先打打暴力,也许在打的过程中也会有所启发。对于一场不是很顺的比赛暴力就更为重要,这种比赛本来打的可能就不是很好,不打暴力就会导致彻底趋势。在发现一道题可能需要较长的时间时可以先把后面的题的暴力打了,有个基本保障。
-
简单题不要搞复杂了。写复杂做法前一定要三思,发现不对劲就要及时跳出复杂的思路中。
-
一道题不要直接就上数据结构。像 T4 这种同时存在前后缀的题直接上树显然是比较复杂的,这时不妨将前缀和后缀拼起来,后面其实就比较简单了。可能还是思维有点僵化了,以后数据结构板块不要走火入魔了。
大概就是这些。这次考试出的问题实在太多了,下次不要再犯了。

浙公网安备 33010602011771号