最近有很多学员家属询问参加USACO竞赛是否需要先学奥数吗,其实编程算法和奥数是2个不同的领域,两者没有特别直接的联系。接下来我们为大家详细解释一下。(点击了解USACO竞赛全面介绍)
一、USACO含金量简介
很多人可能不太了解USACO竞赛(美国信息学奥林匹克竞赛),其实它的含金量非常高,为留学添砖加瓦的好帮手。其官网是美国一个著名在线题库,为每年夏季举办的国际信息学奥林匹克竞赛(IOI)选拔美国队队员。
USACO竞赛须知:
比赛规则
每年的12月、1月、2月和3月都分别有USACO比赛开放日,在比赛窗口开放的三天内,选手可以选择在任意时间登陆USACO账号开始比赛。
每场比赛4—5个小时,比赛从在线打开试题后开始计时,可以使用C++,Java,Python,Pascal和C中的任意一种语言进行做题,在时间结束前通过网络将写好的程序提交即可。
奖项设置
青铜级、白银级、黄金级、白金级
二、什么是算法?
在回答USACO竞赛是否需要先学奥数吗前,我们首先要明确一些基本概念。
USACO竞赛涉及的计算机算法,是一种教你如何高效使用计算机解决不同类型问题的方法,例如当碰到排序问题时,有不同的排序算法,它们在时间和空间上的效率都不一样,你要了解这些算法并作出选择。
从这个角度来看的话,和奥数还是有一些相似的,奥数也是在教小朋友如何使用不同的方法解答不同类型的问题,例如鸡兔同笼,流水行船等问题都会有不同的解答方法。所以如果学员学过奥数,能够懂得对问题进行归类,并找寻对应的方法,这种思维过程对算法学习是有帮助的。
三、为什么说USACO竞赛不需要奥数功底?
从知识点的角度来说,计算机算法和奥数的知识点基本上不相关,奥数学习的是一些数学知识,而计算机的算法都是和如何高效使用计算机相关的。
对于初始的算法学习来说,是不需要奥数功底的,算法学习到高阶的时候,高效的数学建模能够有效的帮助解决问题,但这种建模所涉及到的数学知识,早已超出了国际学校早期奥数所覆盖的范围。
所以对于没有学习过奥数的学员来说,学员家属不用担心学不懂算法,通过计算机算法的学习,是能够帮助学员提升思维的。
相比于国际学校早期奥数要学习的知识点,计算机算法并不多,据官方统计,USACO 这20多年的题目,基本上就集中在这16种算法上:
· Dynamic Programming
· Greedy
· Complete Search
· Flood Fill
· Shortest Path
· Recursive Search Techniques
· Minimum Spanning Tree
· Knapsack
· Computational Geometryo
· Network Flowe
· Eulerian Path
· Two-Dimensional Convex Hull
· BigNums
· Heuristic Search
· Approximate Search
· Ad Hoc Problems
并且这些算法出现的概率也不是平均分布的,前几种算法出现的概率已经覆盖了80% 的IOI题目。总共也就是16种算法,听上去是不是一下子觉得压力小了很多?
三、USACO竞赛,不止于算法
学习这16种算法并不会耗费很多时间,但当你真正参与USACO竞赛的时候,就会了解到,USACO 的竞赛题目并不会单独的考这些算法知识点,它一般都是综合题目,需要经过分析和转换后才能了解需要使用什么算法来解决。
同时,还要根据算法的要求,构造相应的模型,而这种灵活运用算法的思维过程和能力,才是真正难于培养的。这也是非常考核导师的地方,如何深入浅出的讲解知识点,如何通过经典题目培养学员灵活运用算法的思维过程,这是决定一个导师是否优秀的标准。
相信通过以上的介绍,大家应该已经明白奥数并不是学习USACO算法的必要条件,对于四年级以上的学员来说,都已经具备了学习编程,参加USACO竞赛的基础能力。接下来需要的就是一个靠谱的导师了。不仅要教授知识点,更重要的是灵活运用算法的思维。点击预约试听【竞赛复习班】,即刻获得最合适的竞赛导师与课程。
不同于一般机构,唯寻的竞赛导师都拥有亲身参赛经验与丰富的实战培训经验。配合研发教案,能帮助学员启发竞赛思维,复习效果更显著。
更多国际竞赛复习信息点击2020年NEC参赛指南、BPHO难度阅读。