赛事规则

本页面介绍了适合学生编程语言参赛费用比赛形式竞赛等级晋级机制提交规则2026赛事变动技术细节的详细内容。

请仔细阅读以下内容


一、USACO赛事规则

1.适合学生

任意年级中学生

对计算机科学感兴趣
计划未来申请计算机、人工智能、数据科学等相关专业

*高三学生也可以参加12月月赛,实力突出的选手可以在12月RD申请前获得白金级。

2.编程语言

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

3.参赛费用

完全免费

4.比赛形式

线上比赛,个人参赛,通过登录USACO官网,在线提交代码。

考试时长:考试时间为4~5小时

5.竞赛等级及考试内容

USACO 设有 Bronze(青铜)、Silver(白银)、Gold(黄金) 和 Platinum(铂金) 四个组别。

每个组别的题目难度逐级递增:

Bronze:入门级,适合编程基础较薄弱的选手,主要考查简单的逻辑思维与算法实现。要有基本编程常识,会至少一种编程语言。

Silver:中级,考查常见算法(如贪心、二分、前缀和等)的应用。

Gold:高级,涉及动态规划、图论、高效数据结构等较复杂的算法。

Platinum:顶级,要求选手具备对复杂问题的建模能力和算法创新。该组别没有确切的算法考纲,难度无上限。

6.竞赛计分

青铜、白银、黄金、铂金级别比赛都是3道题,总分1000分。每道题333.3分。每道题有10个测试点,通过一个可得33.33分。

7.晋级机制

晋级路径:铜级 → 银级 → 黄金级 → 铂金级,难度依次提高。新注册的参赛选手需要从最低级别开始参赛,并逐步提升自己的水平。

晋级方式:满分1000分,通常 600-800分会晋级到下一个级别。

满分直通:若在比赛中获得满分(1000分),系统将立即提示晋级,并允许在同一赛季内继续挑战下一级别(例如铜级满分→直接参加银级比赛)。

分数线晋级:没有获得满分的选手,他们需要在比赛结束后等待晋级分数线。晋级分数线会根据每场比赛的难度和参赛者的整体表现进行划定。选手的得分如果达到或超过晋级分数线,即可晋级到下一个等级。

8.提交规则

即时反馈:选手提交代码后,系统会即时返回得分反馈,帮助选手快速调整代码。

无限次提交:选手可在比赛期间无限次提交代码,直至通过所有测试点或时间耗尽。


二、2026赛季USACO规则变化

为确保学术诚信,对本赛季的学术活动结构和规则作出了以下重要调整和澄清:

新规①:US Open 首次改为 线下监考

往年 USACO 全赛季均采用线上竞赛形式,而本赛季的收官之战 ——US Open 将首次要求所有希望参与选手前往官方指定考点,在监考老师的现场监督下完成比赛。

新规②:Gold/Platinum选手 必须在指定时段开赛

铜 / 银级不受影响,黄金、铂金级别必须在规定时间参赛才能获得认证成绩!

时间要求:必须在美东时间周六 12:00-12:15(对应北京时间周日 01:00-01:15,跨日需重点注意)开启比赛,仅 15 分钟窗口;

窗口期外参赛成绩标记为 “Non-Certified”,无法用于晋级、无法用于US Open邀请或选拔。

新规③:训练营门槛:认证成绩 + 场次要求

需 2次有效成绩 才能获得US Open基本邀请;

3次有效成绩 可更稳妥锁定资格;

“有效成绩” = 在规定时段内完成比赛 + 达到一定分数阈值。

这一规则主要对 Gold 和 Platinum 级别的选手产生影响,低级别选手可重点关注前序赛事的晋级目标。

新规④:白金选手“集体降级”

据最新规则,2026年新赛季除了极少数顶尖选手(如IOI入围者),所有白金选手都会被降级到黄金组。

目的与影响:

这意味着等级不再是终身制,而是按年度评定。所有选手都需要在新赛季重新证明自己的实力,竞争变得更激烈和公平。


三、USACO对于C++/Java/Python特定技术细节

USACO的每场比赛通常包含3至4道题目,考生需要提交使用C、C++、Java或Python编写的解题程序。对于应优先学习哪种语言的问题,官方的明确建议是C++,因为它是国际信息学奥林匹克(IOI)唯一指定的语言,尤其当参赛者计划深入高阶阶段时。

1.使用C/C++解题需注意

对于C/C++程序员:程序使用 gcc/g++ 7.5.0 编译,使用“-O2”优化标志和“-lm”访问数学库,以及“-std=c++11”或“-std= c++17" 启用对 C++11 或 C++17 的支持。Int 的大小为 32 位;如果需要 64 位整数,请使用“long long”。要使用 C 风格的 I/O(例如,scanf、printf)读取或写入 long long 变量,请使用“%lld”格式字符串。

2.使用Java解题需注意

程序使用OpenJDK运行时环境11.0.10编译和执行。考生必须将整个程序在一个文件中提交,且该文件必须恰好有一个与文件名同名的公共类(例如,如果文件名为MyFile.java,则应包含public class MyFile)。此类需要包含考生的public static void main函数。文件中的所有其他类应定义为不带public标签(例如class MyOtherClass)。不要在源代码中包含package行。

3.使用Python解题需注意

USACO提供Python 2.7.17和Python 3.6.9;提交时请务必选择正确的版本,因为为一个版本开发的程序常常在另一个版本中无法正常工作(使用python --version检查考生本地Python解释器的版本)。

请注意,由于Python速度较慢,即使给予了Python提交更宽松的时限,但是也不能总是保证有可能解决某些问题的最大规模测试用例(尽最大努力设计比赛使其对Python程序员开放,尤其是在较低级别组别,但一旦考生晋升到更高级别组别,运行时间变得更为关键时,可能最终需要考虑学习一种更快的语言)。程序执行使用-O标志以启用一些优化。


澄清,联系比赛组织者

如果您发现问题措辞不当或含糊不清,您可以发送电子邮件给学术活动组织者 Brian Dean (bcdean@clemson.edu),请求澄清;您可能只会收到“更仔细地阅读问题”的回复,尽管有价值的重要澄清将发布在学术活动页面上。

如果您将学术活动电子邮件发送至 bcdean@clemson.edu,请确保主题包含“USACO”一词,并且请注意时区——美国东部标准时间 (EST) 的白天时间之前不会有回复。