课程咨询热线
131-6601-1680发布时间:2023-05-15 13:42:38|编辑:犀牛教育
来源:犀牛教育
2023年USACO月赛已经结束了,打算参加2023年12月份USACO竞赛的小伙伴不妨来看看USACO竞赛的考题的难度如何?今天我们就一起来看看吧
2023 USACO公开赛铜组P1
数理逻辑题,需注意问题转化
P1题目:
P1 FEB:
Bessie and Elsie are plotting to overthrow Farmer John at last! They plan it out over (1 <= N <= 2 * 10 ** 5) text messages. Their conversation can be represented by a string S of length N where Is is either B or E, meaning the ith message was sent by Bessie or Elsie, respectively.
However, Farmer John hears of the plan and attempts to intercept their conversation. Thus, some letters of S are F, meaning Farmer John obfuscated the message and the sender is unknown.
The excitement level of a non-obfuscated conversation is the number of times a cow double-sends - that is, the number of occurrences of substring BB or EE in S. You want to find the excitement level of the original message, but you don’t know which of Farmer John’s messages were actually Bessie’s / Elsie’s. Over all possibilities, output all possible excitement levels of S.
INPUT FORMAT (input arrives from the terminal / stdin):
The first line will consist of one integer N.
The next line contains S
OUTPUT FORMAT (print output to the terminal / stdout):
First output K, the number of distinct excitement levels possible. On the next K lines, output the excitement levels, in increasing order.
SAMPLE INPUT:
4
BEEF
SAMPLE OUTPUT:
2
1
2
SAMPLE INPUT:
9
FEBFEBFEB
SAMPLE OUTPUT:
2
2
3
SAMPLE INPUT:
10
BFFFFFEBFE
SAMPLE OUTPUT:
3
2
4
6
SCORING:
• Inputs 4-8: N ≤ 10
• Inputs 9-20: No additional constraints.
USACO竞赛的第一道题目需要分析出题目的性质,分为F左右都有元素和F只有一边有元素进行讨论,问题转化之后就比较简单了。
考虑每一段"XFF...FFY"可以产生多少贡献
结论是如果X=Y,能产生0,2,4,6,...的贡献
否则能产生1,3,5,7,...的贡献
对于下面的情况,整体减一可以得到和上面一样的结论
再考虑边缘,FF...FFY可以产生多少贡献
发现能产生0,1,2,...的贡献
于是我们可以分别统计这两种,加上初始答案即可
代码如下:
#include <iostream>
using namespace std;#define rep(i,h,t) for (int i=h;i<=t;i++)#define dep(i,t,h) for (int i=t;i>=h;i--)int n;char s[200010];bool t[200010];int main(){ scanf("%d",&n); scanf("%s",s+1); int O=0; rep(i,1,n) if (s[i]==s[i-1]&&s[i]!='F') O++; int Q1=0,Q2=0; rep(i,1,n) { if (s[i]=='F') { int j=i; while (s[j]=='F'&&j<=n) j++; j--; int num=j-i+1; if (i!=1&&j!=n) { if (s[i-1]==s[j+1]) num++; O+=num%2; Q1+=num/2; } else Q2+=num; i=j; } } rep(i,0,Q1) rep(j,0,Q2) t[i*2+j+O]=1; int OO=0; rep(i,0,n-1) if (t[i]) OO++; cout<<OO<<endl; rep(i,0,n-1) if (t[i]) cout<<i<<endl; return 0;
P2 MOO LANGUAGE
P3 ROTATE AND SHIFT
USACO竞赛十年真题题库
对于想要USACO冲刺升级的学生,这套USACO竞赛备考题库资料,非常适合大家。可以根据自己的需求领取!


USACO竞赛十年真题题库
长按扫码,在线领取
👇👇👇

关于 USACO 系列赛事的赛题难度。这其实对于已经了解了 USACO竞赛的读者来说,算是一个老生常谈的问题了——从青铜组到黄金组,绝大多数赛题所涉及的知识点,一般不会超过国内 CSP-J 考察知识点范围太多,往届的赛题,可能直到黄金组才涉及到一些国内提高组阶段的图论算法的编码。而本次的赛题,除了白金组和黄金组的第 2 题,涉及到树形动态规划这一算法,其余的 8 道题在知识点层面上,绝未超过 CSP-J 的考察范围。甚至可以说,多知道一些算法,对于解题甚至没有好处:比如白银组的第 3 题,了解过一些图论算法的读者,可能会以为那道题需要 Bellman-Ford 算法寻找图中的负环,但实际上,该题仅需在学而思课程中 Z3 上学期阶段学习到的 BFS 算法即可解决。
所以,要将所有低级组别的赛题拿到满分,只需要学习过几个对应的知识点就够了吗?完全不够。因为这就涉及到了 USACO 系列赛题与国内信息学竞赛,尤其是 CSP-J 的一个很大不同:尤其是对于初学信息学竞赛的入门者而言,USACO 赛题是没有像 CSP-J 第一题那样的送分题的,每一道题都需要参赛者对问题做适当的分析与变形,未必能刚读完题就马上产生非常明确的思路。而在紧张的比赛节奏中,将精力更多放在读题和问题分析,而非编码中,虽然是进阶学习者比较适应的节奏,但初学者往往会对这样的比赛节奏感到焦虑,从而乱了阵脚。其实这样的题,用大家平常经常看到却又略觉抽象的一句话来说,就是“重视考察思维”。实际上,信息学竞赛试题的难点从文本阅读和套路掌握,迁移至更加灵活的“具体问题具体分析”能力的考察,也是国内竞赛的一个趋势。每一套令人拍案叫绝的 USACO 赛题,其实都是在提醒我们的选手自己。
犀牛教育USACO竞赛课程
初级班:计算机编程刚入门,语言基础薄弱,无比赛经验计划申请计算机专业的中学生
中级班:至少会一门计算机编程语言(推荐C++或Java),算法基础一般,少量比赛经验
高级班:有完善的计算机编程语言基础,有入门算法经验,一定比赛经验,如NOIP,USACO银组等
|
犀牛USACO课程 |
||
|
课程 |
班型 |
课时 |
|
USACO白金级班 |
3-6人班 |
40h |
|
USACO金级班 |
3-6人班 |
40h |
|
USACO银级班 |
3-6人班 |
40h |
|
USACO铜级班 |
3-6人班 |
40h |
*以上部分班接受插班生
*更多班课信息可添加二维码一对一咨询
USACO竞赛冲冲冲!
👊👊👊

课程目标:完成USACO的知识点的学习。通过系统地梳理,充分的练习熟悉考试的题型和难点重点,冲刺USACO竞赛高分
USACO初级班:计算机编程刚入门,语言基础薄弱,无比赛经验计划申请计算机专业的中学生
USACO中级班:至少会一门计算机编程语言(推荐C++或Java),算法基础一般,少量比赛经验
USACO高级班:有完善的计算机编程语言基础,有入门算法经验,一定比赛经验,如NOIP,USACO银组等

咨询USACO课程
长按扫码,在线了解
👇👇👇

16621768052
国际竞赛 · AMC8 / AMC10 / IB / IGCSE / AP / A-Level · 留学规划
客服随时在线,欢迎拨打犀牛教育官方联系电话咨询课程
微信咨询
微信扫一扫