x

USACO美国计算机奥林匹克竞赛详解

2022-07-28 13:23:37编辑:飞飞

USACO活动简介

美国计算机奥林匹克竞赛(USA Computing Olympiad,简称USACO)是一项为初高中生或者年龄更小的学生提供的顶尖在线竞赛。首次举行于1993年,旨在锻炼学生用计算机编程解决问题的能力,至今已有29年的历史,是美国极具认可度的计算机赛事。

其官网是美国中学生的官方竞赛网站,同时也是美国有名的在线题库,是专门为信息学竞赛选手准备,旨在为每年夏季举办的国际信息学奥林匹克竞赛(IOI)选拔美国队队员。这个题库可以说是全世界知名的,别的国家,包括咱们中国引进/改编原题的大有人在。

背景活动| USACO,编程计算机爱好者还有不知道它的么?
数据显示2020年赛季的第一场月赛,共有10752名用户进入了USACO比赛,比上一届增长了40%,其中有9508名参与者至少提交了一种解决方案,来自80个不同的国家。

推荐星级及推荐理由

1、推荐星级★★★★★ 五星

2推荐理由

✔ MIT官方推荐,含金量高,助力名校申请。USACO的奖项分为铜、银、金和白金四个等级,对于未来想申请计算机、工程等理工科专业的留学党来说,USACO如能拿到黄金或者白金级别的奖项,将会大大增加录取名校(MIT/Stanford)的概率。历年获奖者,有不少都拿到了哈佛、耶鲁、普林斯顿、斯坦福、MIT、加州理工、杜克、CMU、帝国理工等顶尖名校的录取。
背景活动| USACO,编程计算机爱好者还有不知道它的么?
来源于MIT本科招生官网

另外在申请时,其含金量与AMC赛事相比,大概是这样的对应关系:

AMC等级USACO等级AMC10/12铜级AIME银级USAMO黄金MOP/TST美国信息奥赛集训营

✔ 线上比赛,无需奔波,且国际影响力大。USACO为线上比赛,不限国籍,不限地域,学员只需在比赛开放日内,打开电脑,登陆网站,在规定时间内提交解决方案即可。

数据显示,2020年赛季的第一场月赛,共有10752名用户进入了USACO比赛,比上一届增长了40%,其中有9508名参与者至少提交了一种解决方案,来自80个不同的国家。其中5297人来自美国,2412人来自中国。可见,USACO比赛的影响力越来越大,中国选手所占的比重也是比较高的。

背景活动| USACO,编程计算机爱好者还有不知道它的么?
数据来源于USACO官网

✔ 免费的在线题库,培养算法、应用与编程思维。USACO官网本身就是强大的在线题库,只要有一台电脑,就可以在线免费注册,免费!!且不限国家,不需要任何资格认定。一旦完成注册就是青铜战士了,可以在上面一路升级打怪了。

一方面,它是非常好的备赛题库。USACO的题目重思维、质量高,作为选手参加USACO前的免费题库,可以说是非常强大了,同时作为NOIP、省选、清北体验营、NOI等国内信息学赛事的赛前训练也非常有价值的。

另一方面,哪怕不是为了备赛,它也是学习、培养、训练算法、应用与编程思维非常好的渠道。USACO极为重视对算法时间效率与优化水平的考察,很多试题必须要进行非常细致的优化才能够通过,参与过USACO的同学对其后续编程会产生较大帮助。而且USACO题库的设置也是跟游戏通关类似,难度递增、设置了相应的关卡,如此有趣美妙的设计,纯学习都是很有节奏且有趣了。

USACO赛事活动说明

1、适合学生任意年级中学生。

尤其适合有意向往美国计算机、工程等理工科方向申请的同学

12年级的学生也可以参加12月的月赛,只要实力够强即可在12月RD申请前获得白金级,作为申请前后最后一次背景提升的机会。

2、赛事说明

USACO分为不同的月赛,全球的参赛者可以通过参加网上的三场月赛,获得晋级。

2021-2022赛事时间

第一场月赛时间:2021年12月17日-12月20日

第二场月赛时间:2022年1月28日-1月31日

第三场月赛时间:2022年2月25日-2月28日

公开赛时间:2022年3月25日-3月28日

(注:以上时间均为美东时间)

在月赛赛事窗口开放的时间内,参赛者可以选择任意时间进入开始比赛。通常来说每次竞赛的时间为3-5个小时,中间不暂停。

一共考3道题,可以反复提交答案,提交后会知道多少testcase正确,但不能看到testcase。考到满分1000分则可以当场晋级到下一级,只要比赛窗口没有关闭,就可以继续向下一级进发。理论上只要实力够强,你可以在一场月赛里直接升级到白金级。其他人将在该场月赛赛程结束后,根据分数线决定是否晋级。

3月赛等级划分

01青铜 参赛资格:注册USACO账号即为铜级
难度等级:铜级只要有基本编程常识,会至少一种编程语言。铜级的编程限制时间还是够用的,大部分初次参赛的选手都能在第一次考试中晋级白银级。

02白银 参赛资格:通过铜级比赛的选手
难度等级:需要基本的问题解决能力和简单算法(例如:贪心算法,递归搜索等),还需了解基础数据结构。从白银级开始,选手需要寻找更好的算法才能使程序在规定时间内跑完。

03黄金 参赛资格:通过银级比赛的选手
难度等级:需要有一定的算法基础,理解一些抽象的方法(例:最短路径,动态规划),并且对数据结构有比较深的了解。

04白金 参赛资格:通过黄金级比赛的选手
难度等级:需要有很高的编程基础,对算法有深入的了解。部分比赛问题最后的优化方案,可能不只一个,得出的答案也不只一个。

4编程语言

可以使用C / C++,Java,Python,Pascal任意一种语言。

我们会更推荐选用C++参赛,这也是在往年赛季中大多数选手所选用的语言。
背景活动| USACO,编程计算机爱好者还有不知道它的么?① 2020年第一场月赛
背景活动| USACO,编程计算机爱好者还有不知道它的么?② 2020年第二场月赛

背景活动| USACO,编程计算机爱好者还有不知道它的么?③ 2020年第三场月赛
背景活动| USACO,编程计算机爱好者还有不知道它的么?④ 2020年公开赛

根据去年的数据,可以发现参加选手所使用的语言排名为:C++ > Java > Python > C > Pascal。
而Pascal是最不推荐的语言,在去年前两场月赛中仅有个位数的选手使用,其中还有同学是点错了语言。官方负责人Brain Dan也说过,后续可能会考虑取消对Pascal的支持。

USACO备赛建议

本周五,USACO第一场月赛就要开打了,现在还来得及备赛么?

1、针对12年级的同学针对有较强编程能力的同学,可以争取在12月的月赛中,直接晋级到黄金或铂金,对于12月RD的申请也是非常有利的背景活动。对于编程能力一般的同学,建议从python或者java入手,上手较快,可以争取拿到白银及以上的等级。

2、针对11年级的同学11年级最佳的备赛时间,是在今年10月前就能够开始进行备赛准备。

如今年是首次参赛,又未提前做备赛准备,现在准备也还是有机会的。可以在12月全心备赛,争取在明年1-2月的两场月赛中打到白银及以上的等级。如有必要,也可以在明年12年级,再冲一次。
如果去年有参加过USACO拿到了白银等级的同学,可以赛学结合,多学点算法、数据结构的内容,大量刷题训练,争取在明年1-2月的月赛中,拿到黄金及以上的等级。

3、针对9-10年级的同学理论上来说,9-10年级是最佳的备赛年级。针对想要在USACO比赛中拿到黄金或白金奖项的同学,准备越早备赛周期越长,可以参赛的赛季机会越多,获奖的概率也越高。
提前学习C++是不错的选择。一来这是比赛中使用最多、也最能出高成绩的语言,而且它属于基础编程语言,无论是在以后学习,还是未来的工作中都用得到。

USACO的备赛,如之前没有编程基础,那今年的赛季可以先试试水,争取拿个白银以上等级;如在初中时有参加过国内编程大赛且有不错成绩的,今年也可以冲刺下白银、黄金以上的等级。即使没冲到黄金以上,只要拉长备赛的周期,明年的机会就很大了。

不要忘了USACO官网本身就有一个强大的Training题库,可以高效利用题库,多练习、建立自己的编程学习档案。哪怕不是为了备赛,对于未来想要学习计算机相关专业的同学,也是一个设计精良的宝库。