USACO,全称为 United States of America Computing Olympiad (美国计算机奥林匹克竞赛)。
USACO 是国际奥林匹克信息学竞赛(IOI) 美国国家队选手的预选比赛。由于 USACO 面向全球信息学爱好者开放,逐渐成为全球信息学竞赛爱好者参与的一项重要赛事。
由于 USACO 的设立目的是选拔美国国家队,所以题目形式和中国选择国家队的比赛很接近。但是赛制和比赛方式和国内比赛有些不同。
USACO 不是一场比赛。而是从第一年的 12 月开始,持续到第二年的三月。每月一场,一共四场。其中最后一场是“公开赛”,题目稍微难一点。除了最后一场的“公开赛”以外,每场比赛三道题,四小时。最后一场“公开赛”题目要难一些,比赛时间是五个小时。
USACO 的每一场比赛的比赛时间都是连续四天。参赛选手需要在这四天当中任选连续的四个小时(公开赛是五个小时)进行比赛。比赛通常安排在美国时间的周五到周一,这样全球任何一个地方都可以在周末参赛。也就是每一个选手的参赛时间是不同的,靠诚信约束选手不在比赛期间进行交流。
USACO 有一个“级别”的概念。分青铜、白银、黄金和白金四档。每个赛季的每一场比赛,这四个级别都会同时进行。新注册的选手必须从青铜级别打起,达到一定的分数才能在下一场比赛晋级到上一个级别。
晋级有两种情况:一种是满分晋级。如果选手在赛时拿到满分。可以在同一场比赛的时间段内再次参与高一个级别的比赛。也就是说,理论上可以在一场比赛的四天里面从青铜打到白金。另一种晋级的方式就是常规晋级,比赛结束后组织者根据全部选手的成绩划定分数线,分数线上的选手在下一场比赛的时候晋级到更高级别。
晋级分数线的划定不是固定的,是从这场比赛参赛选手的成绩根据比例反推的分数线。一般来说,在一场比赛的三道题当中,要拿到两道半才能晋级。
首先,美国大学的录取官,看重的是学生是否与众不同,是否愿意为自己感兴趣的事情不断地追求。竞赛成绩要放到证明自己“与众不同”、“为兴趣不断追求”的背景中体现,而不能孤立的成为申请学校的要素。
所以说,并不是 USACO 固定的哪个级别就一定能申请到什么样的学校。但是不同级别对应不同的晋级人数,很容易体现出“与众不同”。比如每年打入白金级的,只有几千人(全球,不限年龄)。这个难度是相当大的,所以如果能进入这个级别,基本上可以作为申请美国大学的拳头项目,可以让名校录取官眼前一亮的重要成就。由于参与编程比赛的女同学非常少,所以女生打到黄金一级,就已经比男生打入白金更稀缺,更有优势了。
当然,只有很少数同学能在竞赛中获得如此亮眼的成绩。但是,如果你真正热爱编程,可以把打竞赛作为“为兴趣不断追求”的大的叙事中的一个环节来体现。和科技项目、服务社会结合在一起,呈现出一个“为兴趣不断追求”,“用自己的专长服务社会”的立体的、阳光的形象。也能在众多申请书中脱颖而出,被录取官选中。
USACO 是对全球开放的,不限年龄,不收取费用。参赛者只需要在官网(http://usaco.org/)注册一个账户,就可以在比赛季参与。
(以下均为美国时间)
12月赛程:12月15-12月18日;1月赛程:1月26-1月29日;2月赛程:2月16日-2月19日;3月美国公开赛:3月15-3月18日赛程时间内任选连续4小时时间参赛即可注意:还未报名注册报名的考生抓紧时间啦!USACO官网注册报名网址:http://www.usaco.org
注册账号
登录USACO官网:http://www.usaco.org/点击Register for New Account按钮,注册新账户
填写信息并激活账号
Complete information and activate注册后按照下图指引填写信息
注册结束后
在绑定的邮件中查收自己的账号和默认密码。并登陆官网 (24小时内首次登陆方可激活,登录后可修改密码),并点击“Login”
适合对象:任意年级初高中生
考试地点:线上比赛,个人参赛,通过登录USACO官网,在线提交代码
比赛语言:支持Java、Python、Pascal、C和C++,考生在考试时选择任意语言参加即可!
参赛费用:比赛参与是完全免费的
评分要求:代码运行正确性、算法时间效率、内存使用效率
今年增加USACO竞赛铂金级别特殊要求如下:
为确保学术诚信,官方对本赛季的竞赛结构和规则作出了以下重要调整和澄清:
官方明确规定,在竞赛期间禁止使用生成式人工智能,同时美国学生不得使用VPN隐藏自己的IP地址。
其次,参与铂金级别竞赛的美国学生需在指定的时间内开始竞赛,即从周六美东时间中午12:00起,铂金级别的题目将于此时首次发布。
在这个时间段内参赛并获得认证分数的学生,在最终选拔决赛选手时,其分数将比非认证分数具有更大的影响力。值得注意的是,铂金级别的题目仅在指定时间窗口内对美国的考生开放,在时间窗口结束后的4到5小时内对所有其他学生开放。其它时间进行竞赛的分数,是非认证成绩。
目前,特殊的时间安排仅适用于铂金级别竞赛,其他级别竞赛不受影响。希望晋级决赛选手参加集训营的学生,应力争取得铂金级别认证分数。因为时间的缘故,只有三个而非四个认证分数的学生,我们也有可能考虑。赛季中期由金级别升至铂金级别的学生,若认证分数不足三个,同样有机会被考虑为决赛选手,认证分数越多越有利。
USACO每场比赛3-5个小时。可以在比赛规定时间开始后登陆USACO账号,从在线打开试题后开始计时。一套试题中有3-4道题,选手需要在时间结束前通过网络将写好的程序提交。
程序提交后官网会给出用test case检测程序的结果,并根据结果给出这一题的得分。可以使用C++、Java、Python、Pascal和C中的任意一种编程。比赛对于程序的大小,运行需要的内存以及运行的时间都有一些具体规定。
每次比赛,实力强的选手可以连续升级。在比赛窗口开放的4天时间内,选手可以选择任意时间开始比赛。
开始比赛3-5小时内,如果拿到了高分(接近满分或满分),系统会提示直接晋级,可以在这4天内继续挑战下一级,只要实力足够,一场考试可以升到满级铂金级。
USACO竞赛官网为美国有名的在线题库,更是美国中学生的官方赛事网站。专门为信息学竞赛选手准备,但必须在注册后才能进入题库,新注册的参赛选手需要从最低组别开始打起。
USACO竞赛一共有4个级别,青铜、白银、黄金、铂金四个级别,一进入USACO注册账号即为铜级,一级一级的比赛刷高自己的等级,如果你最终能够获得黄金或者铂金级别的奖项,绝对是提高竞争力的大杀器。
青铜级别比赛
参赛资格:一进入USACO注册账号即为铜级。
难度等级:铜级考试只要基本编程常识,会至少一种编程语言。铜级的编程限制时间还是够用的,大部分初次参赛的选手都能在次考试中晋级白银级。
考核知识点:分支和循环,嵌套可变循环,列表、函数、二维列表,基础数组, 多重循环,复合判断、枚举算法
白银级别比赛
参赛资格:通过青铜级比赛的选手。
难度等级:需要基本的问题解决能力和简单算法(例如:贪心算法,递归搜索等),还需了解基础数据结构。从白银级开始,选手需要寻找更好的算法才能使程序在规定时间内跑完。
考核知识点:基本数据结构、贪心、递归、递推等基本算法
黄金级别比赛
参赛资格:通过白银级比赛的选手。
难度等级:需要有一定的算法基础,理解一些抽象的方法(例:最短路径,动态规划),并且对数据结构有比较深的了解。
考核知识点:堆、栈、树、链表等高级数据结构,动态规划等高级算法,算法时间和空间复杂度
铂金级别比赛
参赛资格:通过黄金级比赛的选手。
难度等级:需要有很高的编程基础,对算法有深入的了解。部分比赛问题最后的优化方案,可能不只一个,得出的答案也不只一个。
考核知识点:各类高级的数据结构,尤其是需要算法的时间和空间复杂度,总分1000分。每道题333.3分。
题单使用说明
Open Judge 是一个公开的刷题网站。其中 noi 小组里面整理了大量的好题,可以用来刷题练习。
地址是:http://noi.openjudge.cn/注册好账户之后,就可以做练习了。
难度系数是这样判断的:难度 1 表示练习到平均 10 分钟就能 AC 就可以不继续练了;难度 2 表示 20 分钟就能 AC,这种题就可以不练了。依此类推。
没有拿到过提高组 100 分的同学,难度 4 以及以上的题目即便有能在 40 分钟内 AC 的,也值得练习。
比较简单的题目,如果实在没时间把代码写出来,可以写出文字思路。不要光想想,一定要用文字写下来,这样有利于认真思考每一个细节。
题目不难,希望能做到每题 15 分钟搞定。
学过字符串函数之后,可以做这部分练习。
这部分练习,适合已经学习过一年以上的同学。训练目标是搞定语法熟练度,从写代码时思考语法,到思考算法,代码自然从手中敲出。通俗点讲,就是要做到写作文的时候,不用再考虑字、词、句。而是把注意力放到谋篇布局和整体结构的把握上。
有些题目是好想不好调的。一定要坚持调试,找到所有的坑。
这部分内容,涵盖比较复杂的分支循环,数学杂题,还有递归搜索。如果大部分题目能在 40 分钟内自行调试完毕,然后一次提交 AC,普及组一等奖肯定到手了。
注意,到这个阶段,要提高一次 AC 的比例了。正式比赛是只能提交一次的。
这部分内容,需要灵活应用搜索、栈、队列,需要图和树的基本算法知识,而且也要求灵活应用。如果大部分题目能在 40 分钟内自行调试完毕,然后一次提交 AC,普及组可以冲击 300 分。对应到北京市普及组前 50 名了。
这些题要挨个做,不要挑了。
实际上除了USACO备赛可用以外,后续大家备赛CSP、或者作为平时的知识点查漏补缺,都是非常有帮助的!
关键字:USACO竞赛,