今天为大家介绍的是USACO ——美国计算机奥林匹克竞赛!
01
USACO 简介 USACO的全称是United States of America Computing Olympiad,即美国计算机奥林匹克竞赛。竞赛主要衡量算法和运用两大方面的技能,旨在锻炼学生用计算机编程解决问题的能力。
相信大部分的同学一定都听说过奥林匹克竞赛,奥林匹克包括数学,物理,化学,生物和信息学。
而USACO就是美国的信息学奥林匹克竞赛,对于申请美国大学本科(尤其是计算机专业)的学生有帮助,历届顶尖选手受到牛校钟爱,开设目的是为国际性赛事IOI选拔美国队队员。
02
为什么要参加USACO?
赛事含金量
USACO竞赛的成绩对申请美国大学是非常有帮助的,如下是国外著名网站Quora上的回答,可以看到,大家对USACO申请美国大学的作用还是给予了非常肯定的回答的。
- 图源网络 -
下图在罗列对申请美国大学有帮助的活动时,第一项就强调了USACO的作用。
- 图源网络 -
最后这张给出了USACO等级对应的数学奥林匹克竞赛等级,很多偏理科的大学都会要求AIME(美国高中数学邀请赛)成绩,但如果你有对应的USACO成绩,大学也是认可的。
- 图源网络 -
目前,USACO在美国非常热衷,但是国内参与的人员还比较少,以2018年公布的数据为例,总共有65个国家3048 名学生参加竞赛,其中来自中国的学生只有280 人。
相信随着STEM教育理念,及编程低龄化,普及化的发展,国内USACO 的参加人数和热度会越来越高。
思维训练和能力提升
接受一个编程项目,独立思考相关知识点(数学逻辑、数据结构、算法、计算机体系结构、英语理解等),运用各种能力(计算思维、资料收集、刻意练习)设计并实现,验证正确性,反复迭代修正。
整个流程在普通的学制教育中往往要到硕博士才有训练机会,而参加竞赛的选手从小就在以这种方式训练着思维,对于专注力和独立解决问题的能力提升非常有帮助。
同时,参加高阶信息学竞赛的往往是最优秀的孩子,他们一起交流、学习、讨论和竞争会潜移默化地影响每个孩子的能力、习惯和学习方式。
而且竞赛的打分,不仅仅是解决问题,还要考量解决的时间效率和空间效率。不同解决策略的得分不一样。
这种评价方式,培训和锻炼的就是学生的效率意识和全局规划意识。
对学业和工作的帮助
在USACO竞赛中证明自己的问题解决能力和学习能力,会对今后的学业和工作都有很大的帮助。
现在很多互联网公司内,特别是偏向于人工智能的技术公司,都在大量吸纳竞赛人才,因为这些人非常善于解决核心问题。
人工智能的核心就是算法。
例如搜狗的CEO王小川(IOI 1996年金牌),旷视科技CTO, 人工智能学术界陈启峰(IOI 2007金牌),陈丹琦(IOI 2008金牌),周源(IOI 2005金牌)等,信息学竞赛对于未来想从事计算机相关工作的人有很大的提升作用。
03
USACO 比赛资讯
问:如何报名参加比赛?
USACO竞赛是免费的,参赛选手不限国籍,考试形式为机考。
在www.usaco.org 注册一个免费账户(只需要有邮箱就能注册),注册时不需要选定特定的比赛日期,只要有了这个账户,可以在竞赛开始后随时参与竞赛。
问:如何注册报名及获取考试信息?
- 图源网络 -
注册: 在右栏your account部分,有一个选项为“register for new account”,点击,然后出现下图,填信息,提交就好了。
- 图源网络 -
系统会发password到你的邮箱。然后就可以登录了,登陆后可以修改password。
参赛选手请提前注册,注册通过需要一点时间。学生可以凭借这个账户,随时登录查看考试资讯和获取题库,每年考试期间登陆参加具体月份的考试。
问:USACO什么时候举行比赛?
USACO 一般是每年12 月份开始到次年3月份进行,会选择四个周末举办主要的比赛,从周五到周一,在这个时间段内学生可以选择在任何时间比赛,通常来说每次竞赛的时间为4个小时,但有时候是3个小时或者5个小时。
问:如何准备USACO?
登录官网后可以看到上面有一个训练题库(https://train.usaco.org),可以登陆这个题库并进行注册,这个网站和USACO官网的注册是分开的,需要独立注册,可以这上面进行训练。
同时,登录官网还可以查看历年的竞赛真题(http://usaco.org/index.php?page=contests),可以做一下这些题目,对题目的类型有一个基本的了解。
只有对竞赛做好万全的准备,才能拥有十足的信心去应对竞赛的挑战。
04:USACO难度及等级
青铜参赛资格:一进入USACO注册账号即为铜级。
难度等级:铜级考试只要基本编程常识,会至少一种编程语言。铜级的编程限制时间还是够用的,大部分初次参赛的选手都能在第一次考试中晋级白银级。
白银参赛资格:通过青铜级比赛的选手。
难度等级:需要基本的问题解决能力和简单算法(例如:贪心算法,递归搜索等),还需了解基础数据结构。从白银级开始,选手需要寻找更好的算法才能使程序在规定时间内跑完。
黄金参赛资格:通过白银级比赛的选手。
难度等级:需要有一定的算法基础,理解一些抽象的方法(例:最短路径,动态规划),并且对数据结构有比较深的了解。
白金参赛资格:通过黄金级比赛的选手。
难度等级:需要有很高的编程基础,对算法有深入的了解。部分比赛问题最后的优化方案,可能不只一个,得出的答案也不只一个。
05:USACO比赛规则介绍
个人战
USACO每场比赛4-5个小时。
可以在比赛规定时间开始后登陆USACO账号,从在线打开试题后开始计时。一套试题中有三道题。选手需要在时间结束前通过网络将写好的程序提交。
程序提交后官网会给出用test case检测程序的结果,并根据结果给出这一题的得分。可以使用C++,Java,Python,和C中的任意一种编程。
比赛对于程序的大小,运行需要的内存以及运行的时间都有一些具体规定。
每次比赛,实力强的选手可以连续升级。在比赛窗口开放的三天时间内,选手可以选择任意时间开始比赛。
开始比赛4小时内,如果拿到了高分(接近满分或满分),系统会提示直接晋级,可以在这三天内继续挑战下一级,只要实力足够,一场考试可以升到满级白金级。
没能拿到满分的选手需要等到三天的赛程结束后,等待晋级分数线,才能决定是否晋级,如果成功晋级,可以在一个月后的第二场继续参赛晋级。
USACO 使用的编程语言
USACO 接受多种语言的解决方案,包括 C++,C,Java 和 Python。
由于Java 和 Python 相比于 C++/C语言运行的会慢一些,所以这两种语言所允许的运行时间是 C++ 和 C 的两倍。
USACO 提供了更加灵活的支持,使得比较喜欢 Java 和 Python 的人也有机会参与到算法竞赛中。
经过本文的讲解,相信大家对USACO竞赛有初步的了解。从2021年秋季学期开始,比特橙子启动“算法实验班”教学项目,课程以信奥赛为终极目标,冲击各项国内外赛事,其中就包括USACO。
机会从来都是留给有准备的人,有意向进行兴趣培养或有参赛计划的家长,可以尽早为孩子做好规划!