寒假的训练以不太顺利的结果结束。整个寒假训练都是两天一场学长抓的训练赛,然后补题,由于自己比较菜以及一些莫名的因素,导致训练赛打得比较差,尤其是后几场。训练赛没能打好的原因可能与状态关系确实很大,但其中肯定与实力有关吧。总结一下,这些题目,算法和思维上难倒自己的好像也没几道(后来补出来的),但是赛场中有很多因素导致自己没能发挥出来。
第一:最重要的就是代码能力。有很多题目自己能想到解法,但是在代码实现的过程中会耗费很多时间和精力,所以每场最多做出一道代码量大的题目,有一次甚至因为差一秒和ac失之交臂,明明一个半小时前就开始做这题了。关于这点我也想过怎么去解决,学长的建议是多写数据结构,但我寒假也没有给自己开数据结构专题去刷。我发现我代码的bug基本都出现在那些我忽略的细节问题上,这些问题导致结果偏差很大,调试又需要时间,由于自己的不谨慎,导致各种细节出乱,也使我在debug修改的时候会慢慢失去耐心,就更难ac了。所以说我的代码能力跟我的思维不够慎密有很大联系。其次,之前我也发现过,自己有时候不会去追求短码,应该来说还有用繁杂的代码来省去思考的习惯,这在一定程度上导致了我出错的几率更大。最后还有一种原因可能就不是代码能力问题了,而是在构造解题思路的时候,自己想出来的思路的代码量可能会偏大,有时候换别的思路会让代码量大大减少,这跟前面提到的代码不够短也差不多了吧。针对最后一点倒是有好的办法,我在赛后对自己比赛里代码过长的题目,都去参考下别人的ac代码,看看有没有更好的思路,这个我已经开始做了,以后也要坚持。对于第一点原因的话,办法就不是很多了,毕竟这个问题困扰其实很久了,现在能想到的办法就是写必要的注释,让自己理清思路,最重要的是时刻想着自己在干什么,这段代码的意义。然后最直接的办法就是,这个学期给自己抓数据结构的专题,为了锻炼代码能力,也夯实自己的数据结构基础。
第二:卡水题。在cf和训练赛中,出现过一些水题由于我对题意理解(分析错误)的偏差,而导致多次提交不能ac,罚时严重而且让自己的状态明显受到影响。这种情况真的是非常惋惜的,失之毫厘,差之千里。我需要做的就是提高对题意的把握,正确评估这个题难度,读完题多思考一会儿。再者就是多练,只有练习才能提升自己分析题目的感觉。
第三:算法。其实这是背锅最少的一个点,不是我算法很好,而是因为目前的题还没超出我的算法范围。但为什么要写呢?因为我知道这只是目前,可以说,目前的我只会一些简单的算法,简单的数据结构。对于我这样零基础大学开始的acmer来说,算法通常是很大的问题,因为我们确实起步晚,接触的算法少。所以接下来很重要的就是恶补算法,把我没学透的数学,和没学的数学都去好好学习,学透,然后就是之前提到的,数据结构的学习,以及实现。
这段时间也思考了很多,怎样的训练最适合自己。poj的题目我刷的最少了,原因是自己真的不太愿意刷吧,不是题目不好,只是觉得现阶段做这些题可能费力不讨好。我一直在想,去做那些能提升自己能力的题目。寒假也确实做了,学长抓的训练赛,没有考察特别难的算法,cf也是,基本考思维和代码,所以天天就是做比赛和补题。我也还不能评价效果如何,但是我确实感觉到一个寒假什么算法也没学,这样肯定是不行的。之前也在想,多打比赛,多见识世面,就能提升自己,但是现在觉得,最近这么频繁的cf,自己补题都来不及,其它的比赛,又怎么能补呢?也许我现在的实力参加太多的比赛只会增加比赛量,但得不到对应的量的提升。我的思路没错,多参加比赛挺好的,但是不补题就不会有什么作用了。所以说,要补题,要学会在安排时间的时候,给自己留充分的时间补提,一场比赛里,有自己差一点ac的题目,也有自己算法尚且不行的题目,这两种题目我都应该去补,当然算法过于超前的除外,这样对于自己来说能够更全面的提升。对于系统地学习一些算法,考虑到已经开学了,我不在实验室的时间就会增加,所以我打算在不在实验室里的时候抽空看paper,看书,看视频,在实验室里也可以看,然后将自己学会的算法去找题目练习。而学算法和补题的时间肯定都会占用很多时间,所以说解决的办法只有一个,多花时间!