USACO 竞赛含金量有多高?不同等级能力要求有什么区别?2026 最新晋级规则你知道吗?

USACO作为全球顶尖的中学生计算机竞赛,早已超越“兴趣活动”的范畴,成为申请 哈佛、MIT、斯坦ford、CMU、UC Berkeley 等理工强校计算机、人工智能、数据科学专业 的核心学术凭证。其独特的阶梯式晋级体系、生活化题目背景与严苛评分标准,使其在升学与能力培养双重维度上具备极高含金量。

一、USACO 的三大核心含金量

1. 顶尖名校高度认可

MIT、Stanford、CMU 等校在本科申请中明确关注 USACO 成绩;

Gold(黄金)及以上级别 被视为等同于 NOI 省队水平,是 CS/AI 专业申请者的“硬通货”;

在 Common App 或学校补充文书中提及 “USACO Platinum”,能显著提升学术形象。

2. 能力培养远超竞赛本身

题目场景生活化:如“奶牛排队拍照”“农场灌溉调度”,训练将现实问题抽象为数学模型的能力;

拒绝模板化:强调自主建模 + 算法设计 + 代码优化,而非死记硬背;

夯实工程基础:从 Bronze 到 Platinum,逐步掌握从基础语法到高级数据结构的完整技能栈。

3. 公平透明,全球通用

全程线上、自动评测、实时反馈;

成绩无地域/学校限制,中国学生与美国本土选手同台竞技;

证书永久有效(但 Platinum 自 2025 年起需年度认证)。

二、参赛与评分规则(2026最新)

项目 说明
注册方式 官网 usaco.org 注册,需英文真实信息
支持语言 C, C++, Java, Python, Pascal(推荐 C++:效率高,适合高阶)
比赛形式 每场 4 小时,3 道题,总分 1000 分
评分机制 每题 10 个测试点,通过 1 个得 33.33 分;无限次提交,实时显示通过数(不显示错误用例)
比赛频率 每年 4 场月赛(12月、1–3月)+ 1 场公开赛(US Open)

关键细节:

提交后立即知道“过了几个测试点”,但不知道错在哪,考验调试能力;

时间从首次打开题目开始计时,建议提前熟悉界面。

三、四级等级体系与能力要求

等级 适合人群 核心考察内容 典型题目类型
Bronze(青铜) 编程新手(学过循环/数组) 基础语法、模拟、枚举、简单DFS 奶牛分组、队列安排、数字游戏
 Silver(白银) 有基础算法经验 贪心、二分、前缀和、BFS/DFS优化 区间查询、滑动窗口、最短路径雏形
Gold(黄金) 算法进阶者 动态规划、图论(Dijkstra)、线段树、复杂DP 路径计数、资源分配、多维状态优化
Platinum(铂金) 顶尖选手 网络流、后缀自动机、计算几何、思维构造 高维优化、博弈论、创新建模

不可跳级:新用户从 Bronze 开始,必须逐级晋级。

四、2026 最新晋级规则(三大核心机制)

规则1:单场满分 = 当场晋级 + 连赛连升!

例如:你在 Bronze 场 3 题全对(1000 分)→ 立即升入 Silver;

系统会立刻开放 Silver 题目,剩余时间重新计为 4 小时;

若 Silver 再拿满分 → 继续升 Gold,以此类推!

策略价值:实力强的学生可在一场比赛内连升三级,极大节省时间成本。

规则2:Gold → Platinum 需“认证分数”

只有从 Gold 升 Platinum 时,满分必须在 美东时间周六 12:00–12:15(15分钟窗口)内开赛;

此时段外获得的满分不触发当场晋级,仅按常规分数线处理;

其他级别(Bronze→Silver、Silver→Gold)无此限制。

原因:防止刷分,确保 Platinum 含金量。

规则3:未满分?看赛后分数线!

每场赛后,官方根据题目难度划定晋级线(如 Bronze 700 分);

达线即可晋级下一场,无“禁止两级跳”限制。

备赛的同学可扫码咨询USACO一对一辅导规划!

USACO从青铜到铂金四大等级参赛资格&考察内容&难度分析一文说清!

USACO(美国计算机奥林匹克竞赛) 是全球最具影响力的中学生信息学竞赛之一,采用四段式晋级体系:青铜(Bronze)→ 白银(Silver)→ 黄金(Gold)→ 铂金(Platinum)。选手必须依次通过前一级别才能解锁下一级,但若实力足够,可在单场比赛中连续晋级(如青铜→白银→黄金)。更优秀者还可争取进入美国国家集训营(Camp),代表美国出战IOI。

一、青铜组(Bronze)——编程入门者的“第一道门槛”

参赛资格

新注册即为青铜组,无需前置成绩。

考察内容

基础语法:分支(if/else)、循环(for/while)、函数、列表/数组

基础算法:

枚举(Brute Force)

简单模拟

基础 DFS(深度优先搜索)

偶尔涉及:前缀和、贪心(但不要求系统学习)

难度分析

相当于 国内 CSP-J 普及组前3题 或 LeetCode 简单题;

不要求复杂数据结构,重在逻辑清晰 + 代码实现能力;

典型题:农场布局模拟、简单路径查找、计数问题。

备赛建议:

掌握 C++ 基础语法 + 刷透 USACO Guide Bronze 题库(约20题),即可稳过。

二、白银组(Silver)——算法思维的“分水岭”

晋级条件

在任意一场月赛中达到白银分数线(通常需 700+/1000 分)。

考察内容

数据结构:栈、队列、优先队列(heap)、简单树结构

核心算法:

贪心(Greedy)

二分查找(Binary Search)

前缀和 / 差分

BFS / DFS(带剪枝)

简单动态规划(DP,如线性DP)

尺取法(Two Pointers)、分治

难度分析

相当于 CSP-J 提高组水平 或 LeetCode 中等题;

题目开始强调算法效率,暴力解法常超时;

典型题:区间调度、最短路径简化版、滑动窗口优化。

备赛建议:

系统学习 贪心 + 二分 + BFS/DFS + 简单DP,完成 USACO Silver 官方题库(约30题)。

三、黄金组(Gold)——高阶算法的“实战战场”

晋级条件

白银组比赛中达到黄金分数线(通常需 800+/1000 分)。

考察内容(重点!)

类别 核心知识点
数据结构 并查集(Union-Find)、树状数组(Fenwick Tree)、线段树(Segment Tree)
图论 最短路(Dijkstra, SPFA)、最小生成树(Kruskal/Prim)、拓扑排序、强连通分量
动态规划 区间DP、树形DP、状态压缩DP
搜索优化 折半搜索(Meet-in-the-Middle)、IDDFS
其他 基础数论(模运算、快速幂)、组合数学(排列组合、容斥)

难度分析

相当于 CSP-S 提高组 或 Codeforces Div.2 D/E 题;

题目常为 多知识点融合(如“图论+DP”或“数据结构+贪心”);

对时间复杂度敏感,O(n²) 往往无法通过。

备赛建议:

重点攻克 图论 + 数据结构 + DP,刷 USACO Gold 题库 + Codeforces 1600–1900 题。

四、铂金组(Platinum)——顶尖选手的“终极试炼”

晋级条件

黄金组比赛中达到铂金分数线(通常需 900+/1000 分)。

考察内容(无固定边界!)

高级数据结构:平衡树(Treap/Splay)、后缀自动机(SAM)、Link-Cut Tree

高级算法:网络流(Dinic)、字符串哈希、莫队算法、CDQ分治

构造题 & 数学建模:无标准解法,依赖极强的问题转化能力

难度分析

难度接近 IOI(国际信息学奥赛);

题目常为 原创模型,需自行设计算法;

即使知道知识点,也可能因常数优化不足而超时。

备赛建议:

精通 C++ STL + 手写高效模板;

刷 USACO Platinum + Codeforces 2000+ 题 + IOI 历年真题;

参与 Codeforces/AtCoder 比赛 保持竞技状态。

备赛的同学可扫码免费领取新赛季USACO全套干货资料⇓

USACO一对一辅导规划!

USACO银升金的三大难点是什么?需要提前多久备考比较合适?

从白银(Silver)到黄金(Gold)的跨越,是USACO竞赛中的一次重大挑战。这一过程不仅要求选手掌握更复杂的算法和数据结构,还需要具备更高的解题效率和代码正确性。以下是针对银升金的详细难度解析及备考策略。

一、USACO银升金的三大难点

难点1:算法复杂度呈指数级跃升

银级核心:

基础算法应用(DFS/BFS、递归、贪心、双指针)

基础数据结构(栈、队列、哈希表)

题目多可直接套用模板,重点考察代码实现能力

金级核心:

高阶算法与复杂数据结构:

动态规划进阶(区间DP、树形DP、状态压缩DP)

图论深化(Dijkstra进阶、Kruskal、网络流、二分图匹配)

并查集进阶、树状数组、线段树

题目特点:

不再有“模板可套”,需要将实际问题抽象成算法模型

结合数论、组合数学知识解题,思维深度极大提升

调试复杂性:

线段树下标错误、DP状态转移遗漏等小问题可能导致整题0分

难点2:时间紧迫,容错率极低

比赛时间压力:

在同样的比赛时间内,金级题目难度大幅提升,代码量和运行时间双双增加。

多数考生只能完整通过1-2题,必须靠部分分拼凑总分。

想稳进金级,至少需拿到2.2题以上分数(约750+分)。

难点3:晋级分数线持续走高

分数线趋势:

2024-2025赛季数据显示:月赛晋级线约700分(满分1000),3月公开赛高达750分。

近3年参赛人数年均增长25%,高分选手扎堆,竞争白热化。

二、USACO银升金备考规划

1.明确目标与时间规划

目标设定:

掌握高级算法和数据结构,提升解题效率与代码正确性。

时间规划:

建议备考周期为5-8个月,分为四个阶段:

基础巩固阶段(1-2个月)

算法进阶阶段(2-3个月)

真题实战阶段(1-2个月)

冲刺模考阶段(最后一个月)

2.基础巩固阶段(1-2个月)

编程语言:

推荐使用C++,因其执行效率高,适合处理大规模数据。

核心知识点:

高级数据结构:

线段树、树状数组、并查集等,用于解决区间查询和更新问题。

图论算法:

DFS/BFS的高级应用、最短路径算法(Dijkstra、Bellman-Ford)、最小生成树(Kruskal、Prim)等。

动态规划:

从基础DP过渡到区间DP、树形DP、状态压缩DP等复杂模型。

3.算法进阶阶段(2-3个月)

深度学习:

贪心算法:

理解其适用场景,学会通过贪心策略简化问题。

数学与数论:

模运算、欧拉函数、快速幂算法等,提升数学建模能力。

字符串算法:

KMP算法、前缀树、后缀树等,处理复杂字符串问题。

代码优化:

注重时间复杂度和空间复杂度的分析,避免暴力搜索导致的超时问题。

4.真题实战阶段(1-2个月)

真题训练:

每天解决3-4道USACO银级及以上难度的真题,重点攻克2018年后的新题。

错题分析:

建立错题本,总结错误原因和解题思路,形成知识体系。

限时模考:

每周进行2次限时模考,适应比赛压力,提升解题速度。

5.冲刺模考阶段(最后一个月)

全真模拟:

按照比赛规则进行全真模拟,确保至少2题AC,提升应试能力。

模拟考试频率:

每周至少进行1次全真模拟,严格按照比赛时间进行,培养临场发挥能力。

备赛的同学可扫码免费领取新赛季USACO全套干货资料⇓

USACO一对一辅导规划!

2025-2026赛季USACO首场月赛落幕!USACO首场月赛各等级考情分析!附首场真题+解析+参考答案!

2025-2026赛季USACO第一场月赛已结束。本次比赛在扎实的代码能力之外,对数学推导与逆向思维能力提出了更高要求,不少选手反映难度显著提升。

战罢即需再战,现在正是全力准备第二场月赛的关键时期。在投入新一轮备战前,让我们通过数据,深入分析本届赛事的考情与趋势。

扫码免费领取【2025-2026年USACO计算机奥赛首场月赛】

真题+视频解析+每道题目的参考答案


一、本季首赛晋级分数线与参赛人数

组别 晋级分数线 参赛人数
铜升银 700分 10,377人
银升金 700分 3,876人
金升铂金 800分​ 1,917人

二、与上赛季首赛数据对比

组别 2024-2025参赛人数 2025-2026参赛人数 变化 晋级分数线变化
铜升银 11,472人 10,377人 小幅下降 持平(700分)
银升金 4,656人 3,876人 小幅下降 持平(700分)
金升铂金 1,012人 1,917人​ 大幅上涨89%​ 上涨100分​

三、USACO第一场月赛各等级详细分析

铜级篇

难度分析

这次铜级的难度,和以前的比赛基本持平。想拿满分的话,有一点难度,特别是第二题如果没有想到正确点的话,很难得到满分。不过一些基本的思考,也可以帮助我们通过一些test case,达到晋级线的准备。

考点分析

第一题【Ad Hoc】

基本上就是一道数学题,需要大家去结合不同的情况思考,比如ca和cb的大小关系。这里很容易错的一个点,在于B可以冗余cb-1个,而不会产生新的一轮交换。需要结合一些实际例子,去推理发现这种情况。

第二题【Greedy】

很多同学觉得最难的一道题目。很容易被sample带偏,去想每次匹配的应该都是COW、OWC、WCO这种形式,但实际不一定是这样。如果发现3次一定可以(所有C、所有O、所有W),那么可以拿到部分分数。

满分的情况,需要大家再进一步去思考,是不是2次一定也可以?要观察到任意两个字符串,都可以通过删除一个变得完全一样,从而把字符串的左右两部分,构造成完全一样的。

第三题【Complete Search】

比较好拿分的一道题。简单的想法就是每次全部枚举,但是考虑到当前点只会影响部分(最近很多这样的题目,Q次更新每次只影响部分,所以只要考虑当前这次的影响)。只需要去枚举包含当前点的正方形,同时记录上一轮的总和,在此基础上去增加一个变化量即可。

铜级考情总结:

总体而言,铜级三道题的考察点分布比较均匀,也是我们强调的重点。因为逻辑题的比重比较大,所以需要大家有很好的逻辑思考推理能力。

【Simulation】这次没有涉及到,后面2场比赛大家多多关注。

银级篇

难度分析

这次银级的难度,也是一个比较难拿满分的情况,但是大家要学会拿部分分数,特别是关注它一些比较特殊的test case。

同样也需要大家具备比较好的分析能力,逻辑和算法的考察都有,想要晋级两方面能力缺一不可。

考点分析

第一题【Ad Hoc + Simulation】

把详细的步骤列出来,会很容易看出规律,找到突破口。每个牛一定是c时刻诞生,一直到2c-1不会移动,2c开始慢慢一步步往前直到0号位置,再一下子跳到t/2位置,后面重复这个过程。

简单方法就是模拟,但是一步步往前会超时,可以通过位置差和时间差直接计算,把时间复杂度降到O(lgT)。第二类查询,又是常见的【逆向思考】问题,反着往回找到它来时的路。这里需要加速的部分,就是往后到t/2位置需要多少时间,这部分简单的方程推导就可以算出来。总体三道题中,算是最简单的一道问题。

第二题【Graph + Coordinate Compression + Difference + Prefix Sum】

比较庞大的一题,需要大家结合很多的算法点。要善于看test case,会引导我们找到正确的方向。前面的test case会引导往【链】上去想,从而转换成【若干个区间求最多重叠】这样一个经典问题。

满分需要考虑【环】的情况,尝试奇偶环,就可以发现奇数环可以直接计算结果、偶数环可能会检测出冲突等。

最后实现层面,就是对【染色问题】、【坐标压缩】、【差分前缀和】模板代码的改造,大家对于这类经典模板,要很熟悉使用。

第三题【Greedy】

是一个带贪心的构造题,也是需要先分析得到规律。当第i个数值固定,第i+k个就被固定,依次类推,就可以得到k条链(第0个、第1个、…第k-1个)。每条链单独去计算,链头元素是0、1时,这条链1的总个数。

后面就是贪心的策略,最小值肯定优先去选择所有的最小相加。不过要考虑这k条链并不是完全独立的,k个链头必须满足r[0]的条件。所以r[0]不满足的话,必须有一条链发生改变,那么肯定选择【变化最小】的链,加上这个最小变化量就可以,最大值也是类似。实现层面,等价于xor这种运算,会更好实现。

银级考情总结:

总体而言,银级有偏思维也有偏算法的题,特别是第二题的思维难度和代码量都会很大。大家一定要学会从test case中先分析简单的情况,再推导到更复杂的问题。

【Binary Search】、【Tree】等这次没有涉及的重点算法,后面2场比赛大家多多关注。

金级篇

难度分析

这次金级的难度,总体比以往要简单很多,但也是一个比较难拿满分的情况,其中第二题相对比较困难,需要考虑的因素比较多,但前10个test case可以用N方的复杂度来求解,拿到这部分分数的话就足够晋级了。

考点分析

第一题【Cow Traversals】

本题很明显是一道使用disjoint set union来解的题。只需要对disjoint set union做一点点修改,使得disjoint set union在计算的时候可以同步统计每个C、O、W的头所包含的点的个数。

以及让disjoint set union增加一个断开后重新设置parent node的操作就可以实现整道题目的求解,难度不大。

第二题【Milk Buckets】

本题首先需要想通为什么merge顺序的不同会造成最终结果的不同,这里的关键点在于加权求和的理解,也就是越早merge的数字在最终结果中占据的权重越小,所以我们自然可以想到,越小的数需要越早融合。

然后我们会发现,这道题目不能简单地把所有数字从小到大排序然后逐个融合,因为不符合test case中数据的观察。由此我们可以联想到最优的解法只需要提取出当下一个最小值,放到当前最小值的左或右让他们合并,然后再提取出下一个最小值放到当前融合出的值的左或右,让他们合并即可。

但实际计算的时候,我们需要反向思考,我们实际上可以把最大值移到最左或最右,从而实现相同的计算效果,当当前最大值往外移动的时候,我们可以用BIT来快速计算需要swap的次数,并通过标记0/1的方法对整体数据进行快速地替换,从而避免了区域更新的问题。

第三题【Supervision】

这题是非常明显的考察BIT/Segement tree的一道题。只需要反向插入数据,查看每个coach对应能教的学生组合,最后利用动态规划的计算方法对整体数据进行数学计算即可。

金级考情总结:

总体而言,本月的金级题中,第一第三题相对比较简单,解题所需要用到的算法可谓一目了然,实现起来也不复杂。

最难的在于第二题,首先要搞清楚加权求和的规则,然后还要想到greedy以及BIT的使用,难度较高。


USACO竞赛9.9元体验课+寒假集训班

铜级→银级→金级,金牌导师亲授!

扫码了解详细课程安排

USACO 2026 首场比赛——最终结果

USACO 2026赛季的第一场比赛涵盖了涵盖多种技术和难度的算法编程问题。

在为期4天的比赛期间,共有14273名不同用户登录了该比赛。共有11896名参与者提交了至少一个解决方案,来自100+个不同国家。5147名参与者来自美国,中国、加拿大、韩国、印度、马来西亚和新加坡的参与度较高。

总共有34135份评分提交,按语言分类如下:

21839 C++17
5485 Python-3.6.9
3375 C++11
3163 Java
201 C
72 Python-2.7.17

顺便说一句,我们正在努力增加对PyPy的支持,以帮助Python选手在计算要求更高的问题上获得更高分数。

以下是白金、金、银和铜三项比赛的详细成绩。 你还可以找到每个问题的解决方案和测试数据。

USACO 2026 年 首场比赛,白金认证

白金组共有191名参赛者,其中143名为大学预科生。本次白金竞赛颇具特殊性,由于大部分选手从黄金组起步,仅有少数选手以白金组身份参赛(本次竞赛中仅2025年国际信息学奥林匹克竞赛(IOI)决赛选手及在2025赛季表现相近的往届决赛选手具备此资格)。因此,自下一轮竞赛起将发布白金组排行榜,届时我们将拥有更多认证成绩可供对比。本次竞赛的题目难度显然较高,仅有2项认证成绩与15项非认证成绩超过500分!

1 Hoof, Paper, Scissors Triples
查看问题 | 测试数据 | 解决方案
2 Lineup Counting Queries
查看问题 | 测试数据 解决方案
3 Pluses and Minuses
查看问题 | 测试数据 解决方案

USACO 2026 年 首场比赛,金牌

金组共有1917名参与者,其中1242人为预科生。所有在本比赛中获得800分或以上认证分数的选手将自动晋级白金组。晋升者的详细信息将在我们完成学术诚信检查后公布。相当多的选手在这场比赛后晋升至白金组,这也不奇怪,因为许多选手曾是白金级别的选手。

1 COW Traversals
查看问题 测试数据 | 解决方案
2 Milk Buckets
查看问题 | 测试数据 | 解决方案
3 Supervision
查看问题 测试数据 | 解决方案

USACO 2026 年 首场比赛,银牌

银组共有3876名参与者,其中2802人为大学预科生。所有在本比赛中得分达到700分或以上的选手将自动晋级金组。

1 Lineup Queries
查看问题 | 测试数据 | 解决方案
2 Mooclear Reactor
查看问题 | 测试数据 | 解决方案
3 Sliding Window Summation
查看问题 | 测试数据 | 解决方案

USACO 2026 年 首场比赛,铜牌

铜组共有10377名参赛者,其中7770人为预科生。所有在本比赛中得分达到或超过700分的选手将自动晋级银组。

1 Chip Exchange
查看问题 | 测试数据 | 解决方案
2 COW Splits
查看问题 | 测试数据 | 解决方案
3 Photoshoot
查看问题 | 测试数据 | 解决方案

2026赛季正式开启,令人兴奋!正如我们官网公告所示,本季赛事结构将做出若干调整——特别是首次推出三场线上赛,后续还将举办由专业监考人员执裁的全国邀请赛,角逐美国顶尖学生的桂冠。另一项变革是几乎所有顶尖选手将从金牌组开始参赛,而非铂金组。这一调整(以及赛季首赛的常规特征)带来了可观的晋升人数。鉴于我们题目难度多年来从未降低,本次赛事亦不例外,这一成绩相当亮眼。

对于那些尚未晋升的人,请记住,你练习得越多,你的算法编码技能就会越好——请坚持下去!USACO竞赛旨在挑战即使是最优秀的学生,要想在他们身上脱颖而出,可能需要付出大量的努力。

2026 年 USACO竞赛 首场比赛铜奖组问题三—Photoshoot

Farmer John is looking at his cows in a magical field and wants to take pictures of subsets of his cows.

The field can be seen as a N×N grid (1≤N≤500), with a single stationary cow at each location. Farmer John's camera is capable of taking a picture of any K×K square that is part of the field (1≤K≤min(N,25)).

At all times, each cow has a beauty value between 0 and 106 . The attractiveness index of a picture is the sum of the beauty values of the cows contained in the picture.

The beauty value for every cow starts out as 0, so the attractiveness index of any picture in the beginning is 0.

At Q times (1≤Q≤3⋅104), the beauty of a single cow will increase by a positive integer due to eating the magical grass that is planted on Farmer John's field.

Farmer John wants to know the maximum attractiveness index of a picture he can take after each of the Q updates.

INPUT FORMAT (input arrives from the terminal / stdin):

The first line contains integers N and K.

The following line contains an integer Q.

Each of the following Q lines contains three integers: r, c, and v, which are the row, column, and new beauty value, respectively (1≤r,cN,1≤v≤106). It is guaranteed that the new beauty value is greater than the beauty value at that location before.

OUTPUT FORMAT (print output to the terminal / stdout):

Output Q lines, corresponding to the maximum attractiveness index of a picture after each update.

SAMPLE INPUT:

4 2
3
2 2 11
3 4 3
3 1 100

SAMPLE OUTPUT:

11
11
111

After the first update, a picture with the maximum attractiveness index is the picture with upper left corner (2,2) and lower right corner (3,3), which has an attractiveness index of 11+0+0+0=11.

The second update does not affect the maximum attractiveness index.

After the third update, the picture with the maximum attractiveness index changes to the picture with upper left corner (2,1) and lower right corner (3,2), which has an attractiveness index of 0+11+100+0=111.

SAMPLE INPUT:

3 1
3
2 2 3
2 2 5
2 2 7

SAMPLE OUTPUT:

3
5
7

There is only one cow with a positive beauty value, so the maximum attractiveness index will always include that cow.

SCORING:

Inputs 3-6: N≤50,Q≤100
Inputs 7-10: N≤50
Inputs 11-18: No additional constraints.

Problem credits: Brian Law and Cici Liu

2026 年 USACO竞赛 首场比赛铜奖组问题二—COW Splits

Bessie is given a positive integer N and a string S of length 3N which is generated by concatenating N strings of length 3, each of which is a cyclic shift of "COW". In other words, each string will be "COW", "OWC", or "WCO".

String X is a square string if and only if there exists a string Y such that X=Y+Y where +represents string concatenation. For example, "COWCOW" and "CC" are examples of square strings but "COWO" and "OC" are not.

In a single operation, Bessie can remove any subsequence T from S where T is a square string. A subsequence of a string is a string which can be obtained by removing several (possibly zero) characters from the original string.

Your job is to help Bessie determine whether it is possible to transform S into an empty string. Additionally, if it is possible, then you must provide a way to do so.

Bessie is also given a parameter k which is either 0 or 1. Let M be the number of operations in your construction.

If k=0, then M must equal the minimum possible number of operations.
If k=1, then M can be up to one plus the minimum possible number of operations

INPUT FORMAT (input arrives from the terminal / stdin):

The first line contains T, the number of independent test cases (1≤T≤104) and k (0≤k≤1).

The first line of each test case has N(1≤N≤105 ).

The second line of each test case has S.

The sum of N across all test cases will not exceed 105.

OUTPUT FORMAT (print output to the terminal / stdout):

For each test case, output either one or two lines using the following procedure.

If it is impossible to transform S into an empty string, print −1 on a single line.

Otherwise, on the first line print M -- the number of operations in your construction. On the second line, print 3N space-separated integers. The ith integer x indicates that the ith letter of S was deleted as part of the xth subsequence (1≤xM).

SAMPLE INPUT:

3 1
3
COWOWCWCO
4
WCOCOWWCOCOW
6
COWCOWOWCOWCOWCOWC

SAMPLE OUTPUT:

-1
1
1 1 1 1 1 1 1 1 1 1 1 1
3
3 3 2 3 3 2 1 1 1 1 1 1 1 1 1 1 1 1

For the last test, the optimal number of operations is two, so any valid construction with either M=2 or M=3 would be accepted.

For M=3, here is a possible construction:

1.In the first operation, remove the last twelve characters. Now we're left with COWCOW.
2.In the second operation, remove the subsequence WW. Now we're left with COCO.
3.In the last operation, remove all remaining characters.

SAMPLE INPUT:

3 0
3
COWOWCWCO
4
WCOCOWWCOCOW
6
COWCOWOWCOWCOWCOWC

SAMPLE OUTPUT:

-1
1
1 1 1 1 1 1 1 1 1 1 1 1
2
1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2

SCORING:

Inputs 3-4: T≤10,N≤6,k=0
Inputs 5-6: k=1
Inputs 7-14: k=0

Problem credits: Aakash Gokhale

2026 年 USACO竞赛 首场比赛铜奖组问题一—Chip Exchange

Bessie the cow has in her possession A chips of type A and B chips of type B (0≤A,B≤109). She can perform the following operation as many times as she likes:

If you have at least cB chips of type B, exchange cB chips of type B for cA chips of type A (1≤cA ,cB≤109).

Determine the minimum non-negative integer x such that the following holds: after receiving x additional random chips, it is guaranteed that Bessie can end up with at least fA chips of type A (0≤fA≤109).

INPUT FORMAT (input arrives from the terminal / stdin):

The first line contains T, the number of independent test cases (1≤T≤104).

Then follow T tests, each consisting of five integers A,B,cA,cB,fA.

OUTPUT FORMAT (print output to the terminal / stdout):

Output the answer for each test on a separate line.

Note: The large size of integers involved in this problem may require the use of 64-bit integer data types (e.g., a "long long" in C/C++).

SAMPLE INPUT:

2
2 3 1 1 6
2 3 1 1 4

SAMPLE OUTPUT:

1
0

SAMPLE INPUT:

5
0 0 2 3 5
0 1 2 3 5
1 0 2 3 5
10 10 2 3 5
0 0 1 1000000000 1000000000

SAMPLE OUTPUT:

9
8
7
0
1000000000000000000

For the first test, Bessie initially starts with no chips. If she receives any 9 additional chips, she can perform the operation to end up with at least 5 chips of type A. For example, if she receives 2 chips of type A and 7 chips of type B, she can perform the operation twice to end up with 6≥5 chips of type A. However, if she only receive 8 chips of type B, she can only end up with 4<5 chips of type A.

For the fourth test, she already has enough chips of type A from the start.

SCORING:

Input 3: cA=cB=1
Inputs 4-5: x ≤10 for all cases
Inputs 6-7: cA=2, cB=3
Inputs 8-12: No additional constraints.

Problem credits: Benjamin Qi

2026 年 USACO竞赛 首场比赛银奖组问题三—Sliding Window Summation

Bessie has a hidden binary string b1b2…bN(1≤N≤2⋅105). The only information about b you are given is a binary string r1r2…rN−K+1 (1≤KN), where ri is the remainder when the number of ones in the length-K window of b with leftmost index i is divided by two.

Output the minimum and maximum possible numbers of ones in Bessie's hidden binary string.

INPUT FORMAT (input arrives from the terminal / stdin):

There are T (1≤T≤103) independent test cases to be solved. Each test is specified by the following:

The first line contains N and K.

The second line contains the binary string r1rN−K+1, where (mod2).

It is guaranteed that the sum of N over all tests does not exceed 106.

OUTPUT FORMAT (print output to the terminal / stdout):

For each test case, output the minimum and maximum possible numbers of ones in Bessie's hidden binary string, separated by a single space.

SAMPLE INPUT:

7
5 1
10011
5 2
1001
5 3
100
5 5
0
5 5
1
4 4
1
5 2
0000

SAMPLE OUTPUT:

3 3
2 3
1 4
0 4
1 5
1 3
0 5

For the first test case, K=1 means that r=b, and the number of ones in r is 3.

For the second test case, there are two possibilities for b: 10001 and 01110, having 2 and 3 ones, respectively.

SCORING:

Input 2: N≤8
Inputs 3-4: K≤8 and the sum of N over all tests does not exceed 104.
Inputs 5-11: No additional constraints.

Problem credits: Benjamin Qi

2026 年 USACO竞赛 首场比赛银奖组问题二—Mooclear Reactor

Bessie is designing a nuclear reactor to power Farmer John's lucrative new AI data center business, CowWeave!

The reactor core consists of N (1≤N≤2⋅105 ) fuel rods, numbered 1 through N. The i-th rod has a "stable operating range" [li,ri] (−109liri≤109), meaning it can only generate power if its energy ai (chosen by Bessie) satisfies liairi; otherwise, it sits idle and does not generate power. Moreover, ai must always be  an integer. Note that aican be any integer, not limited to [−109,109].

However, quantum interactions between the rods mean that there are M constraints of the form (x,y,z) where Bessie must satisfy ax+ay=z (1≤x,yN and −109≤z≤109) to prevent the reactor from melting down.

Help Bessie find the maximum number of power-generating rods she can achieve in her design without it melting down!

INPUT FORMAT (input arrives from the terminal / stdin):

The first line contains T(1≤T≤10), the number of independent tests. Each test is specified in the following format:

The first line contains the two integers N and M.
The second line contains the N integers l1,…,lN.
The third line contains the N integers  r1,…,rN.
The next M lines each contain three integers x, y, and z, each representing a constraint.

It is guaranteed that neither the sum of N nor the sum of M over all tests exceeds 4⋅ 105 .

OUTPUT FORMAT (print output to the terminal / stdout):

If no choice of rod energies exists that satisfies all constraints, output −1. Otherwise, output the maximum number of power-generating rods Bessie can achieve.

SAMPLE INPUT:

2
3 3
1 2 3
1 2 3
1 1 2
2 2 10
1 1 4
3 2
1 2 3
1 2 3
1 1 2
2 2 10

SAMPLE OUTPUT:

-1
2

In the second test, the constraints require that:

1.a1+a1=2
2.a2+a2=10

Choosing energies a=[1,5,3] results in 2 power-generating rods because:

l1=1≤a1≤1=r1
l3=3≤a3≤3=r3

and a satisfies all required constraints.

SAMPLE INPUT:

1
3 2
10 -10 10
10 -10 10
1 2 0
2 3 0

SAMPLE OUTPUT:

3

Choosing rod energies a=[10,−10,10] results in 3 power-generating rods.

SAMPLE INPUT:

5
3 3
1 -1 0
2 1 2
1 2 1
1 3 4
2 3 3
1 1
-100
100
1 1 3
1 1
-100
100
1 1 2
1 2
-100
100
1 1 2
1 1 4
1 2
-100
100
1 1 2
1 1 2

SAMPLE OUTPUT:

2
-1
1
-1
1

SCORING:

Input 4: x=y for all constraints.
Inputs 5-7: |xy|=1 for all constraints.
Inputs 8-10: |xy|≤1 for all constraints.
Inputs 11-13: No additional conditions.

Problem credits: Akshaj Arora

在线咨询
微信咨询