2024年2月的USACO竞赛已经结束,题目整体难度比一月份简单,代码量较少,老师给大家带来了USACO真题视频解析附USACO题库/教材下载,想参赛备考USACO的同学,可以加老师微信18710542862领取~

题解视频分析:
代码:
#include <bits/stdc++.h> using namespace std; int main(){ ios::sync_with_stdio(false); int T; cin>>T; while (T--) { string s; cin>>s; int n=s.length(); if (s[n-1]=='0') cout<<"E"<<endl; else cout<<"B"<<endl; } return 0; }

题解视频分析:
代码:
#include <bits/stdc++.h> using namespace std; #define int long long const int N=5e5+100; int a[N]; char s[N],s2[N]; signed main(){ ios::sync_with_stdio(false); int n,m; cin>>n>>m; cin>>s; for (int i=n;i<2*n;i++) s[i]=s[i-n]; int sum2=0; for (int i=0;i<n;i++) { cin>>a[i]; a[i+n]=a[i]; sum2+=a[i]; } int sum=0; for (int i=1;i<=n;i++) sum+=(s[i-1]=='R'); if (sum==n||sum==0){ cout<<sum2<<endl; return 0; } int tt=0; for (int i=0;i<n;i++) if (s[i]=='R'&&s[i+n-1]=='L') tt=i; for (int i=tt;i<tt+n;){ int j=i; int now=0; for (j=i;j<tt+n;j++) if (s[j]==s[i]) { now+=a[j]; } else break; j--; if (s[i]=='R') now-=a[j]; else now-=a[i]; sum2-=min(now,m); i=j+1; } cout<<sum2<<endl; return 0; }

题解视频分析:
代码:
#include <bits/stdc++.h> using namespace std; const int N=1e6+10; int a[N],b[N]; int n,m; int f[N]; int main(){ ios::sync_with_stdio(false); cin>>n>>m; for (int i=1;i<=n;i++) cin>>a[i]; for (int i=1;i<=n;i++) cin>>b[i]; for (int i=1;i<=n;i++){ if (a[i]>b[i]) f[a[i]-b[i]-1]++; } for (int i=1e6;i>=0;i--) f[i]+=f[i+1]; while (m--){ int x,y; cin>>x>>y; if (f[y]>=x) cout<<"YES"<<endl; else cout<<"NO"<<endl; } return 0; }
报名官网:http://www.usaco.org/
报名费:无;学生直接登录官网注册账号,免费报名
竞赛级别:铜、银、金、铂金
竞赛类型:个人赛
考试题型:3道编程题
编程语言:C/C++、Python、Java、 Pascal,推荐用C++。
考试时长:月赛4小时,公开赛5小时
满分:1000分
晋级分数线:700-800分,至少做对两道半题。【满分直接晋级,不是满分,则需要本场月赛结束后公布晋级线才能确定是否晋级下一等级考试;因此理论上,只要实力够强,一次赛事,可以直接到铂金级别。
竞赛时间:
USACO竞赛每年有四场比赛,每场比赛有4个级别,考试时间分别是2023年12月和今年的1月、2月、3月。前三场月赛考试时长为四小时,共计三道题;而3月的公开赛考试时长为5小时,题目会比月赛更难一些。

USACO竞赛的等级分为青铜、白银、黄金和白金四个档次。每个赛季的每一场比赛,这四个级别都会同时进行。学生注册就是青铜从青铜级别打起,达到一定的分数才能在下一场比赛晋级到上一个级别。
|