作者:艾庆兴
链接:https://www.zhihu.com/question/56916024/answer/151930400
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
对于新手来说,最重要的是能有稳定的代码能力和基本的解题能力,也就是说遇到自己做过的,或者是知识点类似的题目,应该能稳定想出做法,并且快速的AC它。那么得从两个方面入手,一方面,多刷一些练代码能力的题目,比如恶心的搜索啊,模拟啊,这种代码量很长的题目,一方面,多看书,看一些思维难度比较高的题目,尝试理清楚题目的思维以及细节。经历了这个过程之后,就可以算作是一个初级的ACM选手了:对标现在的区域赛铜水平。之后的训练从两方面入手,一是把自己脑子里面的那根筋打通,所谓那根筋其实就是:有的人想通了算法以后,十几分钟代码就打完了,而有的人想通算法以后,写代码的时候依旧磕磕绊绊,想一会这里,想一会那里,其实差的就是这根筋,因为这种思维这次想到了,但是并不熟练,所以写代码的时候还要不停的梳理,而且实现的时候可能在细节上也会不断调整。打通这根筋的主要办法是多写题,同一类的题目一直做,直到自己遇到下一道同类题目的时候,想出做法以后觉得AC对自己来说已经是小菜一碟的时候就可以不练这一类题目了。比如线段树,刚开始学会了的时候写起来肯定不顺手,当自己刷了很多道题的时候,再看到此类题目,想明白线段树怎么用的时候,你觉得在此处线段树和数组一样是你信手拈来的东西了,你就可以不再刷这一类题目了。这个训练过程需要很长的时间,但是是必须经历的一个过程,否则在比赛中,很难发挥出来。二是把自己的思维强度提升上来,在你实现代码已经完全没有问题的基础上,你就可以不再写代码玩了,而是转为看书or看题,想清楚算法以后对照题解,看自己想的是否正确,如果和题解一致or你确保你的算法的正确性,那么就可以跳过,如果不确定自己算法的正确性,可以打代码试一下。这个过程你将会在比较短的时间内积累大量的题目,从而提升自己的思维层次。这两方面你都做好了,至少可以对标区域赛银以上了。至于后面要做的,就不是新手范围内的问题了,大部分人走到第一个阶段就停下来了。时间分配上,做个总结吧,就是:前期以刷题为主,后期以看题为主,当然,模拟赛是必不可少的。
链接:https://www.zhihu.com/question/56916024/answer/151930400
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
对于新手来说,最重要的是能有稳定的代码能力和基本的解题能力,也就是说遇到自己做过的,或者是知识点类似的题目,应该能稳定想出做法,并且快速的AC它。那么得从两个方面入手,一方面,多刷一些练代码能力的题目,比如恶心的搜索啊,模拟啊,这种代码量很长的题目,一方面,多看书,看一些思维难度比较高的题目,尝试理清楚题目的思维以及细节。经历了这个过程之后,就可以算作是一个初级的ACM选手了:对标现在的区域赛铜水平。之后的训练从两方面入手,一是把自己脑子里面的那根筋打通,所谓那根筋其实就是:有的人想通了算法以后,十几分钟代码就打完了,而有的人想通算法以后,写代码的时候依旧磕磕绊绊,想一会这里,想一会那里,其实差的就是这根筋,因为这种思维这次想到了,但是并不熟练,所以写代码的时候还要不停的梳理,而且实现的时候可能在细节上也会不断调整。打通这根筋的主要办法是多写题,同一类的题目一直做,直到自己遇到下一道同类题目的时候,想出做法以后觉得AC对自己来说已经是小菜一碟的时候就可以不练这一类题目了。比如线段树,刚开始学会了的时候写起来肯定不顺手,当自己刷了很多道题的时候,再看到此类题目,想明白线段树怎么用的时候,你觉得在此处线段树和数组一样是你信手拈来的东西了,你就可以不再刷这一类题目了。这个训练过程需要很长的时间,但是是必须经历的一个过程,否则在比赛中,很难发挥出来。二是把自己的思维强度提升上来,在你实现代码已经完全没有问题的基础上,你就可以不再写代码玩了,而是转为看书or看题,想清楚算法以后对照题解,看自己想的是否正确,如果和题解一致or你确保你的算法的正确性,那么就可以跳过,如果不确定自己算法的正确性,可以打代码试一下。这个过程你将会在比较短的时间内积累大量的题目,从而提升自己的思维层次。这两方面你都做好了,至少可以对标区域赛银以上了。至于后面要做的,就不是新手范围内的问题了,大部分人走到第一个阶段就停下来了。时间分配上,做个总结吧,就是:前期以刷题为主,后期以看题为主,当然,模拟赛是必不可少的。