作者介绍

我是来自于广州某国际部的一名高三学生。目前还没有决定去哪所大学。

USACO/美国计算机奥林匹克竞赛介绍

USACO即美国计算机奥林匹克竞赛,全称United States of America Computing Olympiad, 是一项针对全世界所有的高中信息学竞赛选手的一项竞赛。这个比赛开设目的是为了每年夏季举办的国际信息学竞赛(IOI),选拔美国队队员(4名)。所以说如果在这个比赛中取得好的成绩,这个含金量将会是非常高。但是说句老实话,想入选成为那四名队员几乎是不太可能,因为近几年入选的四名队员几乎都没怎么变过的。(下图是近四年选拔出的4名队员) USACO入选成员 所以一般我们参加这个比赛目标基本上就是能升入golden组或者铂金组。

USACO比赛对参赛者有什么要求?

这个比赛对参赛者没有什么国籍要求,高中生都可以参加,只要在官网上注册成功即可。但是一定要有编程语言的基础。比赛可以接受的计算机语言有C++11, Java, C++, Python 3.4.0, Python 2.7.6, C, Pascal。所以如果同学们对自己计算机语言有信心的和觉得自己的逻辑还不错的或理科思维比较好的,可以参加试试。参加比赛是不需要任何报名费的。 比赛报名渠道/途径是什么?活动有没有什么门槛? 报名渠道就在usaco官网上直接注册账号就可以啦。这个比赛针对高中生的。USACO官网:usaco.org.(页面如下) USACO官网,美国计算奥林匹克竞赛官网 注册: 在右栏your account部分,有一个选项为“register for new account”,点击,然后出现下图,填信息,提交就好了。 USACO报名流程 然后,会发password到你的邮箱。然后就可以登录了。登陆后可以修改password。

USACO比赛有哪些级别?难度怎么样?

青铜

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

白银

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

黄金

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

白金

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

USACO比赛规则介绍

个人战

USACO每场比赛4-5个小时。可以在比赛规定时间开始后登陆USACO账号,从在线打开试题后开始计时。一套试题中有三道题。选手需要在时间结束前通过网络将写好的程序提交。程序提交后官网会给出用test case检测程序的结果,并根据结果给出这一题的得分。可以使用C++,Java,Python,Pascal,和C中的任意一种编程。比赛对于程序的大小,运行需要的内存以及运行的时间都有一些具体规定。 每次比赛,实力强的选手可以连续升级。在比赛窗口开放的三天时间内,选手可以选择任意时间开始比赛。开始比赛4小时内,如果拿到了高分(接近满分或满分),系统会提示直接晋级,可以在这三天内继续挑战下一级,只要实力足够,一场考试可以升到满级白金级。没能拿到满分的选手需要等到三天的赛程结束后,等待晋级分数线,才能决定是否晋级,如果成功晋级,可以在一个月后的第二场继续参赛晋级。

USACO比赛时间

比赛时间节点每年都不一样。
e.g:2019-2020 的比赛时间已放出 Dec 13-16: First Contest Jan 17-20: Second Contest Feb 21-24: Third Contest Mar 27-30: US Open May 21-30: Training Camp Jul 19-26: IOI 2020 in Singapore
每届的第一场开赛时间都是在12月左右,所以2020年12月会有第一场比赛。只要在前三场比赛中升到白金就可以参加全美公开赛。

例题分享

这个是铜组的第一题(也就是整个比赛中最简单的一题吧)。 USACO竞赛真题 Tips:他的右上角你可以看到,你可以选择看中文版的题目还是英文版的。 Step1:一定要认真的读完整个题目(所有文字部分+input & output format),要理解这个题目要干什么?怎么干?在题目中会隐藏他的推理过程,所以这一步非常重要 Step2:如果看完题目还没有完全理解,题目下面给的examples就会起到很关键的作用。 Step3:判断是什么类型的问题,数组?计算?排序?。。。 Step4:画思维导图,来整理自己的思路 Step5:转化成代码 Step6:测试 [series id='513' title='课外活动项目' limit='5']