一共分为铜、银、金、白金四个级别。所有参赛选手需要经过一轮一轮的不同等级赛题慢慢提升。另外需要注意的是USACO是允许一场比赛多轮晋级的。如果铜级满分,当场直接晋级银级继续比赛,反之则需要等到下个月再接着往下比。
每年12月及来年的1、2月共有三次月赛机会。而12月的月赛通常是圣诞前的一个周末,当场出成绩,一周内放榜,非常适合在RD的截止前冲击申请材料的最后一个闪光点。
一年只有一次考试机会,并且考试分成初赛和复赛,初赛是笔试,复赛是上机考试。由于一年只有一次机会,所以一旦没考过,就需要再等一年时间,对于参赛选手来说,初赛甚至比复赛还重要,毕竟如果初赛没有晋级,都无法参加复赛。
USACO竞赛主要衡量算法和运用两大方面的技能,旨在锻炼学生用计算机编程解决问题的能力,并接受多种语言的解决方案,包括 C++,C,Java 和 Python。由于Java 和 Python 相比于 C++/C 语言运行的会慢一些,所以这两种语言所允许的运行时间是 C++ 和 C 的两倍。
相比于国内 NOIP 只接受 C++ 作为考试语言,USACO 提供了更加灵活的支持,使得比较喜欢 Java 和 Python 的人也有机会参与到算法竞赛中。
有初赛的,初赛的笔试题目会涉及到大量的基础知识。所以NOIP对学生的要求是在参加竞赛前要学习大量的数据结构和算法的知识,这些知识不一定要完全灵活运用,但要能够理解,否则可能连初赛都无法通过。
对于初步掌握这些知识的学生来说,他们的编程能力还有待提升,也就是说,即使过了初赛,但复赛还需要进一步提升才能通过。
如果学生有一定的算法基础,那么二者可以任意选择。但对于刚刚入门的学生来说,需要根据自身情况进行选择。
NOIP普及组需要学生掌握的算法却非常多,包括了高精度,递推,递归,搜索与回溯,贪心,广搜,动态规划等。可以说,基本上把重要的算法一股脑全都学了。
USACO 的竞赛形式简单。USACO是没有初赛的,没有那么多需要记忆的知识点,所有的知识点考核都是通过算法题目来体现的,重点考的就是学生算法的灵活应用能力。
USACO更容易出成绩。对于USACO 来说,一年有四次竞赛机会,并且每个级别的算法知识点涉及的也不算多,只需要根据历年真题,认真学习算法并刷题,那么年底通过竞赛的概率会比较高。
但是NOIP的考核一年只有一次机会,而且还分为初赛和复赛,任何一场没有考好,都要再等一年的时间,这对于很多学生来说心理压力还是很大的。