犀牛国际教育旗下指定官方网站~

课程咨询热线 400-656-1680

USACO银组试题解析,不同年级USACO备考规划介绍!

发布时间:2024-02-26 15:14:58 编辑:小Q来源:网站

USACO竞赛怎么备考?竞赛分为多个等级,我们为大家分析一下银级别的题目解析,给大家一些参考,此外,还有不同年级的USACO竞赛备考规划,欢迎咨询网站客服了解详情~

 

本月比赛出现了两个变化:

①由于参赛人数过多,网站在比赛过程中崩溃了。

图片

②在1月赛中,USACO官方提供了中文题面,对年龄段较低的信奥选手非常友好,建议都可以尝试做一下本次比赛的题目。

 

 
USACO竞赛1月银组第一题
 
 

图片

图片图片

图片

试题解析:
图片

有q对(x,y)的输入,每对表示前1~x个数右边第一个比它们大的数必须在下标为y的位置,这

句话还有一个隐藏含义就是第x+1到第y-1个数必须比前1~x个数的最大值要小,即第y个数

比前y-1个数都要大(代码中称为前缀最大值)。用一个前缀和数组pre_max[i]表示前i个数中的

最大值,则a[y]至少为pre_max[y-1]+1。

现在从左往右遍历a[N],分类讨论每一个a[i]的情况:

1.a[i]==0且位置i是前缀最大值,令a[i]=pre_max[y-1]+1

2.a[i]==0且不是前缀最大值,根据贪心思路令a[i]=1(字典序最小)

3.a[i]不为0,是第x+1到第y-1个数的其中一个,但是比前x个数要大,破坏了前缀最大

值的要求,此时需要把之前的某个能改的值提高为a[i]

对全部a[N]修改完毕后,再重新for循环扫描一遍看看新的a[N]有没有冲突,有冲突输出-1

注意事项:这题有T个测试,每个输出最后不能带空格

图片
代码:

图片

 

第二题解析:
图片

以房间1为根节点的树。每次traversal相当于从根出发,沿着父子关系一直走,一个traversal

的终点一定是一个叶节点,因此最小的traversal数必定为叶节点数量,可以用dfs得到,假设

这个数量是k。可以用树上DP来记录每个节点的子树拥有的叶节点数量,状态转移方程为

dp[fa]+=dp[child],则dp[1]就是整棵树拥有的叶节点数量

此时来看题目对potion的描述,每次traversal会在一个节点生成一个potion,下一次traversal

前消失,而我们只会有k个(即dp[1]个)traversal。因此实际上只需要考虑前k个potion。而由

于potion是依靠traversal获取的,因此potion和traversal,也就是叶节点,是一对一绑定的。

假设我们目前在某个节点p,从点p出发获得的potion数量不会超过点p的子树拥有的叶节

点数量。我们再用一个树上DP,potion[p]表示点p的子树拥有的potion数量,状态转移方程

为potion[fa]+=potion[child]。统计完毕后再令potion[p]=min(potion[p],dp[p])。

最终potion[1]就是本题答案。

图片
代码:

图片

第三题解析
图片

抽屉原理+同余性质

题目等价于N个数除以L最多只有3个不同的余数,根据抽屉原理,任意选择4个不同的数,

必定至少有两个数a[i]和a[j]除以L的余数相同(即模L同余)。由同余的基本性质可知abs(a[i]-

a[j])必定能被L整除。因此本题只需要从a[N]中任选4个不同的数,枚举它们的两两差值(一共

有=6种),对这6个数,枚举它们的所有因子fac,进行检验(看看a[1]到a[N]除以fac是不

是最多只有3个余数),符合要求则令ans+=fac。

图片

 

代码:

 

图片图片

 

 
USACO竞赛完整版
 

 

图片

USACO的前四场比赛是在线进行的,而且欢迎世界各地的选手参加,近年来随着国内信奥学习热度暴增,参加USACO的国内选手人数也与日俱增。

对于希望提升或检验自己信息学水平的中国选手,USACO是非常值得参加的;对于有前往美国留学意向的选手,USACO Platinum白金组的获奖,也是相当硬核的履历加分项!

 

 
不同年级如何规划USACO
 
 

 

 

01
G3-5:编程兴趣培养
图片

 

对于这一阶段的孩子来说,培养编程计算机的兴趣和思维能力更重要。建议大多数同学通过参加编程俱乐部,或者编程活动使得学生对编程有浓厚的兴趣,在编程方面可以从较为简单的Scratch、Code.org入手,了解基本的编程概念和算法原理。

02
G6-8:浅学编程语言安全教育
图片

接触编程比较早的同学,从6年级开始就已经系统的学计算机相关知识了。那么对于刚接触USACO竞赛的同学来说,可以先以USACO竞赛语言为突破口,先学习编程语言,对编程零基础的同学可以从Python或Java入门,并学习对应的数据结构和算法。可以通过USACO竞赛官方的题库在线练习,在一定练习后可以准备USACO竞赛铜级考试。

03
G9-10:参加USACO竞赛实战
图片

 

在这个阶段,学生已经掌握了较为扎实的基础知识,可以正式参加USACO竞赛实战了,在备考时,重点是深入学习数据结构和算法,需要熟练掌握至少一门编程语言,建议学习C++语言,后面如果想继续挑战信奥赛也是支持C++语言的。

在备考USACO竞赛时还建议同学们多参加模拟比赛以及解题训练,不断优化解题思维。

04
05G11-12:目标是USACO竞赛奖项
图片

这些学生面临着申请压力,通过USACO竞赛来提升申请竞争力是很明智的,因为USACO竞赛备赛周期短,出分快还是很香的。

学生这一阶段需要提升USACO竞赛奖项含金量,比如争取达到USACO白金级别。

USACO竞赛培训辅导课程:咨询网站客服了解~

相关标签:
TOP