个人学习和背景介绍
同学们,老师们,大家好,笔者是就读于上海市格致中学国际班的吴域,在去年取得了AP CSA五分的好成绩,在USACO中达到了Gold Division,参加过各种国内外科技竞赛,获得了如未来软件工程师竞赛的一等奖、Microsoft Future Image Cup的中国区TOP30、第二届交大长三角AI竞赛二等奖等。
同时也参加过《我的世界》某一工作室的插件开发,不论是实战还是竞赛,本人对于计算机科学也是有较多的见解啦,今天想来和大家分享一下USACO的备考经验。
USACO是什么比赛?
美国计算机奥林匹克竞赛(USA Computing Olympiad,简称USACO)是由美国官方举办的中学生计算机编程与算法线上比赛,也是誉满全美的中学生计算机编程竞赛。
USACO于1992年首次举办,目前已成功举办30多次。旨在为每年夏季举办的国际信息学奥林匹克竞赛(IOI)选拔美国队队员,目前逐渐发展为全球热门的线上赛事,和奥数IMO一样,成为美国大学申请条件下,含金量相当高的官方竞赛。
USACO有四个竞赛 Divisions级别,Bronze, Silver, Gold,和Platinum。所有参赛者都是从铜级赛区开始的。在每个比赛赛周之后,如果参赛者有足够高的分数就会被“promoted”到下一个级别--通常是600-800分(满分1000分)。你还可以在contest weekend中完成所有问题获得满分直接获得晋升。每一组都比前一组困难得多。这通常需要相当多的学习、训练,如果试图提升到一个新的水平的话,每一个等级需要耗费长达一年或更长时间。
USACO在2015年增加了Platinum级别。在此之前,每一个division的难度都比现在大,大约相当于今天的division“one step up”。例如,一般来说,“old Bronze”问题最接近“modern Silver”问题的难度。
比赛含金量如何?
申请美国大学有帮助的活动中,USACO第一项就强调:
近几年,随着STEM教育的理念及编程低龄化、普及化的发展迅猛,USACO的参赛人数和热度越来越高。对于未来美本留学申请理工科专业的高中生来说,USACO能够获得金或者白金级别的奖项,绝对是提高竞争力的大杀器。
当然,USACO也是美国大学申请过程中非常非常有含金量和竞争力的一个竞赛。因为大量的中国学生热衷于参加热门的美国数学奥赛、美国化学奥赛,所以USACO在中国的普及度并不高。如果你参加并且获奖了,能为你的简历加分不少,让你在中国申请者中脱颖而出。
USACO报名与参赛步骤
登录USACO官网http://www.usaco.org/,点击Register for New Account按钮,注册新账户。
USACO官网:
填写信息并激活账号(Complete information and activate)
注册结束后,在绑定的邮件中查收自己的账号和默认密码。并登陆官网(24小时内首次登陆方可激活,登录后可修改密码),并点击“Login”。
竞赛考察的知识点整体介绍
青铜级
参赛资格: 注USACO账号即为青铜级
青铜级考试只要求掌握基本编程常识,会至少一种编程语言。青铜级的编程限制时间还是充足的,只要掌握基础的编程技能,大部分选手都能在第一次考试中晋级白银级。
C++语言基础
高精度算法
链表,堆,栈,队列
搜索算法
排序与集合 map,set,
algorithm库
greedy贪心思想
计算几何入门
白银级
参赛资格: 通过青铜级比赛的选手
需要掌握基本的问题解决能力和简单算法 (例如: 贪心算法,递归搜索等) ,还需了解基础数据结构。从白银级开始,选手需要寻找更好的算法才能使程序在规定时间内跑完。
二分与分治
排序算法
贪心算法进阶
分治,排序与贪心
搜索进阶
递推与前缀和
图论基本概念
基本连通性问题
树,树上计数问题
黄金级
参赛资格: 通过白银级比赛的选手
需要有一定的算法基础,理解一些抽象的方法(例: 最短路径,动态规划),并且对数据结构有比较深的了解。
白金级
参赛资格: 通过黄金级比赛的选手
需要有很高的编程基础,对算法有深入的了解。部分比赛问题最后的优化方案,可能不止一个,得出的答案也不止一个
数论基础
简单字符串
动态规划入门
动态规划进阶
最短路
最小生成树连通性问题
线性数据结构
线段树
赛前需要了解的内容
比赛形式
提交的3-4个程序中的每一个都要对10个或更多的“test cases”进行测试——用已知的结果输入程序中的数据集。您可以为每个给出正确结果的测试用例获得学分。在一个contest weekend的比赛中,一个组别的所有问题总共有1000分。如果您的程序运行时间太长,占用太多内存,或者崩溃,那么您将在测试用例中失去分数,因此代码的效率是一个因素!这在Silver及以上级别的赛组中尤其突出。
比赛的计时形式是什么?
在赛周的任何时候,进入网站并点击按钮启动你的个人比赛计时器,时间为3-5个小时。出发前你会被告知确切的时间限制,通常是4小时。然后,选手将获得竞赛问题的访问权限。
可以休息或提前停止,但一旦你在那个周末点击了“开始”按钮,你的时间就会一直在滴答作响,直到到期--不允许暂停。如果你只是想检查一下题目,那么你可以随意花时间尝试它,想花多少时间就花多少时间。如果你的目标是做好,试着提前计划一整段时间,这样你就可以不分心地工作了。
比赛开始后会发生什么?
在启动计时器后,会被允许回答3-4个问题(通常是3个),选手必须在个人时间窗口中解决。每一个都将提供一个背景问题,必须编写一个程序进行分析。在选手的时间窗口内的任何时候,都可以通过网站提交您的程序进行测试。选手可以在时间窗口内自由切换或返回到任何问题,并继续提交解决方案,直到时间截止或者选手觉得已经全部完美为止。可以选择在同一周末的任何时间使用新的计时器开始新部门的比赛。
不同等级的同学学习方法介绍&分享
没有编程基础的同学如何备考?
建议从Python或者Java入手,上手较快。可以选择先自学,学习主要内容为数据结构,编程语法,配合一定强度的练习和老师讲解,可以初步通过第一轮铜级的选拔。
有编程基础的同学如何备考?
在读AP计算机的高一高二同学,或者学习过Python的同学,可以从C/C++或者Python入手,学习算法知识,加强算法练习和真题训练。
有相关参赛经验的同学如何备考?
在有数据结构和编程语法基础的前提下,需要系统的学习一些常见算法,比如排序等等。同时大量练习官方的金、白金级别的真题。
比赛特点
免费,货真价实,简单
免费:这个比赛不需要任何额外的费用,这就意味着你可以免费的参加这个比赛很多次,无需要有额外的经济负担。
货真价实:这个比赛的含金量如上文所说其实非常之高,比赛的付出与收入是成正比的,有了付出就一定会在这个比赛当中获得比较好的成果!
简单:只要你有一台能上网的电脑就足够,不需要再额外的购买其他外设来参加比赛。
竞赛参考资料
USACO官网
需要初步认知这个竞赛,建议首先在USACO官网上回顾过去的比赛,该网站提供了一系列竞赛材料。这种比赛风格通常被称为“online judge”系统,你可以通过在线搜索找到许多例子。USACO官方还提供其他链接和资源的列表。
USACO书单推荐
书名:Competitive Programming 1-5
介绍:可以迅速提升自己的竞赛硬实力,了解一些基本算法以及一些基本答题思路,可以说是入门必选。
USACO在线资源
https://usaco.guide/
一群敬业的前决赛选手汇集了一个新的在线培训资源。免费收集精选的高质量资源,带您从青铜级到白金级及更高级别。
https://www.geeksforgeeks.org海外算法学习网站
https://www.commonlounge.com/community/e4aac00a033a40ec96657906c6e1b43c/main为1OI做准备和练习 + 在竞争性编程方面做得更好 + 通过动画和视频以有趣的方式学习算法。
http://codeforces.com/blog/entry/23054博客条目中提供了更多在线参考资料的出色列表
https://starcoder.org从基本编码到 USACO 竞争性编程
以上就是本次对USACO竞赛的介绍以及分享啦,谢谢大家!