美国USACO计算机竞赛是美国一项面向中学生的信息学竞赛,USACO极为重视对算法时间效率与优化水平的考察,很多试题必须要进行非常细致的优化才能够通过。相比其他学科竞赛,参加USACO至少有三次月赛和一次公开赛机会晋级,可最大程度、最低成本提升学术背景,对海外升学非常有帮助。
USACO竞赛报名方法
1、注册账号
登录USACO官网http://www.usaco.org/,
点击Register for New Account按钮,注册新账户。
2、填写信息并激活账号
注册后填写个人信息:
注册结束后,在绑定的邮件中查收自己的账号和默认密码。并如下图登陆官网(24小时内首次登陆方可激活,登录后可修改密码),并点击“Login”。
3、开始比赛
然后就可以参加比赛啦!选手需要在比赛开放期间进入竞赛页面参与比赛。如下图所示,点击“Start the Contest!”键即可开始比赛。选手的比赛用时就会立即倒计时,且无法暂停。
进入题目后,点击红框处选择Chinese(zh),可以切换题目语言为中文:
4、提交答案
完成之后就可以提交啦!比赛时需要按要求在自己的编程环境(例如DEV-C++)中完成题目,并提交cpp文件。
比赛会在时限过后自动结束(如已经获得满分,则可以手动提前结束),只需在比赛结束前确保提交过已经完成的题目即可。
USACO竞赛级别划分
USACO竞赛有4个级别,铜级,银级,金级,白金级。每个级别代表不同的编程技能水平。新注册的选手从铜级开始,在规定的时间内完成3道题目,如果过关,可晋级到更高级别。
青铜级别
面向学生:首次参加USACO竞赛学生皆为青铜级。
难度等级:适用于刚学会编程的学生,但是除了排序和二进制搜索之类的基本概念之外,没有任何算法方面的培训。
白银级别
难度等级:需要基本的问题解决能力和简单算法(例如:贪心算法,递归搜索等),还需了解基础数据结构。从白银级开始,选手需要寻找更好的算法才能使程序在规定时间内跑完。
黄金级别
难度等级:需要有一定的算法基础,理解一些抽象的方法(例:最短路径,动态规划),并且对数据结构有比较深的了解。
铂金级别
难度等级:需要有很高的编程基础,对算法有深入的了解。部分比赛问题最后的优化方案,可能不只一个,得出的答案也不只一个。
USACO竞赛备考建议
赛前准备:
准备一些模板,用于复制/粘贴,以读取输入和写入输出。准备一些常用算法的模板作为参考。使用你自己的模板,避免抄袭别人的模板! 在点击开始按钮之前,将 您的IDE或编程环境设置好。
竞赛调试:
在比赛中,程序可能会崩溃,产生错误的输出,因此,学生熟悉调试界面是至关重要的。由于错误往往是编译错误、崩溃、超时或错误的答案,学生可以使用这个大纲来开始调试。
竞赛编译:
如果学生找不到哪一行不能编译,试着使用二进制搜索方法删除代码部分。使用具有自动导入库的IDE,并熟悉自动完成的键盘快捷键。检查异常类型(空指针、除以0、无限递归、内存不足?)如果没有异常,尝试上传避免可能的错误的代码,并使用二进制搜索方法找出可能崩溃的代码区域。
竞赛超时:
注意数组实例化的问题。尽量在程序开始时就把所有东西实例化。试着计算运行了多少操作。如果有必要,可以使用变量。尝试用标准的预分配数组代替List或Map这样的数据结构。对于更高层次的问题,检查是否可以进行动态编程或记忆化。
竞赛复查:
检查你的代码与正确答案之间的间距和格式是否一致。检查整数溢出的情况。检查是否有NaN或未定义的整数运算。如果有时间,试着做你自己的自定义输入,并将输出与你的预期输出进行比较。你甚至可以比较作为中间计算的具体数值。
USACO竞赛辅导课程推荐
USACO重点考察学生的算法分析能力和代码编写能力。不管考察哪个能力,学生都要靠大量做题、经验总结、举一反三等等专业训练来达到。所以参加USACO竞赛,有针对性的刷题训练、USACO竞赛丰富的导师指导是非常重要的!
课程名称 |
班级人数 |
课时数 |
USACO竞赛铜升银 |
3-6人 |
30H |
USACO竞赛银升金 |
3-6人 |
30H |
USACO竞赛金升白金 |
3-6人 |
60H |
USACO竞赛培训全程班 |
3-6人 |
60H |