要学习多少算法才能参加USACO竞赛?

2022-07-28 13:14:18来源:未知作者: 飞飞阅读量:

前几天一位学生向我咨询,说她是在某个自学平台上进行算法学习的,这个算法平台总共有六个级别的算法,她现在已经学习到第三个级别了,平台的老师说基本上应该是已经覆盖了USACO 铜组的算法了,但建议她继续学习第四个级别,最近正处于USACO竞赛期,她在犹豫是应该直接参加竞赛,还是先继续向下学习,等第四个级别学习完毕后再参加竞赛?

于是我就问这位学生,她所学习的这个算法平台针对的竞赛是哪个?是国内的NOIP,美国的USACO,还是其他什么竞赛?得到的回答是,平台老师说学习了他们的算法,这些比赛都可以参加。好吧,这位老师确实没有瞎说,毕竟各大竞赛最终考的算法,其实也就是那些啦。但如果教学没有一个目标,或者这个目标太宽泛的话,那么如何制定教学大纲,如何衡量这套教学方法的效果呢?

我们都知道学习是需要一个反馈的,学校里面为什么要期末考试?是因为需要通过考试来让每位学生和老师知道这半年的学习是否有成效,并根据这个反馈来调整后续的学习计划。学习算法也需要一个阶段性的反馈,从而让学生能感受自己的成长和不足。没有目标的算法学习,就犹如在大海中没有指南针一样,即使你感觉到自己一直在前进,都很有可能是错觉。

另外,如果一套教学体系是没有目标的,那么它的算法编排顺序也会很混乱。我们之前介绍过,国内NOIP 和USACO竞赛,最终都是为了参加国际信息学奥林匹克竞赛的选拔赛,虽然最终目标一样,但这两套体系的学习路径并不一样,直接影响到了每个级别所涉及到的算法及编码能力。如果教学体系没有目标,就很难制定每个级别该学习什么,该达到什么样的编码能力。当然,老师可以根据自己的经验来制定,但这个标准相较于有30多年国际赛事的信息学标准会有什么优势吗?

同时,对于目标不确定的学习课程来说,还有一个问题就是算法难度也不好确定。同样一个算法,可以把题目出的很难,也可以把题目出的很简单,那么学生做出什么样难度的题目,就能够认定学生掌握了这种算法了呢? 当教学内容能够对标某个竞赛的时候,完全可以拿竞赛的难度作为衡量标准,如果没有对标任何竞赛,或者对标了多个竞赛,那么这个难度是否好把握?

对于这位学生,我最终给的建议是让她尽快做一套历年真题,从而能够了解自己当前的水平,在接下来的一月份竞赛中一定要参加一下。她虽然看起来学过很多算法,但是否能够真正灵活使用这些算法呢? 如果对这些算法仅仅只是停留在理解的层面,是无法通过USACO竞赛的。在这种情形下,继续学习新的算法没有意义,毕竟学习的目的在于真正掌握这些算法,而不是为了学习算法而学习。

这里也给准备学习算法的学生一个建议,今后选择算法课程的时候,最好是先确定学习目标(例如参加USACO 竞赛),有了目标后再反向选择合适的课程,这样能够阶段性的衡量学习效果。对于没有明确教学目标的课程,或者目标非常宽泛的课程需要格外注意,这类课程让你无从评判教学效果,你很难确定自己投入的时间和精力是否真的让自己掌握了核心能力!

相关文章

更多栏目

热门文章