x

USACO铜组算法学完了是进一步学习银组算法还是应该刷题?

2022-07-28 13:38:37编辑:飞飞

暑假已经过去一半了,最近很多家长咨询说,孩子马上就要学完铜组算法了,接下来应该继续学习银组算法,还是应该把铜组的历年真题刷一下呢?

正常的流程应该是在算法学习完毕后进行刷题。算法学习只是了解了应该使用哪些算法进行思考,掌握一些解题的思维路径。但仅仅理解了这些思路路径是不够的,如果不能把这种思维方式应用在新的题目上,那么算法的学习就是无效的,无法应用就是没有掌握,真到参加竞赛的时候是没有用的。

从这个角度来说,还是需要通过刷题的方式能够把算法思维强化一下,而历年的真题就是最好的刷题列表。有不少学生会在刷题网站中找题目刷,但恕我直言,如果历年真题还没有刷好的情况下,去找一些与USACO 题目调性不符合的题目刷,这根本就是舍本逐末。

历年真题的列表,在usaco 官网上都是有的,可以一年年的刷过来,顺序可以是从早期的题目到最近两年的题目。因为USACO的难度其实一直是在增加的。先刷早几年的题目,这样能够更好的提升信心,同时这些题目能够比较容易和算法对应起来,学生也能通过这些题目快速的把算法应用起来。

但刷题的过程中,学生可能会碰到很多问题,特别是对于初学完算法的学生来说,一定会碰到有一些题目不会做,甚者这些题目看了提示也不知道该如何做,碰到这种问题可以找个老师请教一下,或者看看网上是否能够找到对应的答案。

另一种选择则是继续学习银组的算法,在继续学习算法的过程中,理解力会随之提升,有些题目甚至使用高阶算法会更容易解决,例如刚过去这个赛季中,12月份铜组的第二道题目,如果学习过银组的差分算法,那么这道题目的解法就会非常简单了。USACO 竞赛中可没有规定应该使用什么算法,能把题目做出来的就是好算法。

银组所涉及的算法会更多一些,银组题目的代码编写也会更加复杂一些。USACO 重点就是考核两个能力,第一个能力是对问题进行分析,通过算法分析找到一条使用计算机解题的思路。第二个能力就是代码编写能力,能够把算法思维变成程序。通过银组算法的学习,可以有效的进一步提升这两个方面的能力。当做过一些银组的题目后,再反观铜组题目,相比而言就会觉得简单一些了。

所以从这个角度来说,学习银组算法也是一个不错的选择。那对于即将学习完铜组算法的学生来说,两种选择,到底应该做哪种呢?

其实从当前这个时间点来看,两种选择都是不错的。目前还不到八月份,离年底十二月份的第一次竞赛考核还有将近五个月左右的时间。如果现在开始完全刷题的话,也不能五个月时间都用来做题。可以考虑利用八月份的时间,集中进行刷题。然后从九月份开始学习银组的算法,到了十二月份,也就是考前的半个月再集中看一下铜组的题目,这样参加USACO 十二月份的竞赛,也就基本上没啥问题了。

当然,也可以先安排银组算法的学习,如果能够充分利用好八月份的时间,差不多国庆节期间应该就能把所有银组算法全部学完了,然后利用接下来的近三个月时间,好好的进行刷题,先刷铜组的题目,然后再刷银组的题目。这样年底参加竞赛就比较有把握了。

综上大家可以看到,由于现在距离年底竞赛的时间还比较多,不管是选择哪一种方式都是可行的。 重点还是要抓紧接下来八月份的时间,毕竟到九月份开学后,时间就没有那么多了。所以年底如果想争取冲一下银组的学生,可以开始好好努力起来了。