很多学员家属反映,自家学员已经掌握了基础的编程知识,但是对如何为参加USACO竞赛开展下一步的学习感到困惑。那么今天我们就给大家开一份USACO竞赛学习清单,希望能对大家有所帮助。
USACO竞赛初学者需要掌握的知识点
学习路径
非二分型排序(计数、选择、冒泡、插入)一有机会好好琢磨
数学类(进制、公约倍数、筛素数、质因子)一快速幂
高精度加法、乘法
字符串(字符数组)一第一个别人封装好的数据结构
.更多的封装好的结构(队列、栈、链表)
一些有意思的小题目(最大连续和、最小和蛇形填充、猴子选大王)
可以看到,对于初学者来说,在初步掌握了编程语言后,就可以开始接触一些算法和数据结构了,数据结构可以先了解概念,并且使用语言已经封装好的结构去解决一些问题,也就是说,可以先考虑如何使用这些数据结构,然后再去研究如何实现这个数据结构。
这就好比学习开车,先不用学习那么多原理,先掌握如何控制方向盘,离合器等,能够熟练开车后,再考虑深入的了解下汽车内容是如何工作的。
需要进一步掌握的USACO竞赛知识点
上述这份清单是接下来需要深入掌握的知识点,数据结构依然是以使用为主,这里列出来的是C++ 语言STL库中的数据结构。算法层面主要是排序,简单策略和递归回溯,这里要重点强调一下递归回溯,这是一种很重要的算法,很多问题都能够使用这种策略获得解题思路。
简单策略虽然名称上有简单两个字,但这种策略绝不简单,这种策略是非常符合计算机特性的,要知道电脑的特性就是运算速度快,每秒能达到上亿次运算,如果人脑按照每秒4次运算,那么电脑每秒的运算量相当于人类不吃不喝连续计算一年的时间,所以很多对于人脑来说计算量大的问题,对于电脑来说很简单,直接暴力解题法,让电脑去计算就好了。
进一步学习下去的话,就要重点关注动态规划了, 动态规划是USACO竞赛中很喜欢考的题目类型,这种求最优解的题目与现实生活中的很多问题都有关联。动态规划有很多种类型,可以由浅入深,逐步掌握。其次是基础搜索,包括深搜和广搜,这也是问题求解的一种通用思路。数据结构上要学习图论,图能够对现实生活中很多问题进行建模。
冲击USACO竞赛需要掌握的知识点
接下来就是更加高阶的知识了,准复习和白金级别的学员,必须要掌握这部分的内容。从上图中可以看到,这部分知识中有大量的数据结构,这些数据结构无法使用标准STL库中的实现。
学习这部分知识,就要做到知其然并知其所以然了,要深入到数据结构的底层,了解其原理,这样才能举一反三,灵活的应用在问题求解中。 算法层面上,要更加深入的学习动态规划算法和搜索算法,很多高阶的题目,都会应用到这些算法思想。
在上文中,我们由浅入深,列出了备战USACO竞赛的学习清单。其实里面有很多都是本科阶段的学习内容了,所以如果学员可以提前掌握这些知识,就能更好地应对未来学习与工作的需要。
如果你是USACO竞赛新人一枚,
不知道如何复习?
如果你还不知道如何根据目标专业选比赛?
如果你的文书干货经历太少,
需要竞赛来助攻?
即刻点击报名【竞赛复习班】,
在G5藤校的捷径上实现弯道超车。
更多国际竞赛复习攻略点击USACO竞赛是什么、2021NEC竞赛参赛指南。