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

课程咨询热线 400-656-1680

USACO第三场月赛真题解析公布!犀牛USACO公开赛快速提分看过来

发布时间:2024-02-23 09:34:19 编辑:Lisa来源:未知

本周,2024年第三场USACO月赛已经落下帷幕,没有当场晋级的同学可以等待一周左右的时间,Sharon老师整理了本次月赛全部真题解析,需要的同学可以在线咨询免费领取!

一起来看看本次月赛银牌试题解析代码+视频吧!

 

- X-NEW-

USACO 2024年2月银牌第一题

图片

图片

 
代码
下滑查看完整代码解析

#include <bits/stdc++.h>

using namespace std;

const int N=1e6+10;

#define int long long

struct re{

int X1,X2,Y1,Y2;

};

re ve[N];

int mx,mn,gg;

vector<int> v1,v2;

bool check1(vector<pair<int,int> > S, int x){

vector<int> v;

if (gg==-1){

v=v2;

} else v=v1;

vector<int> q;

for (auto v:S){

q.push_back(floor((long double)1.0*(v.second-x)/v.first)); 

}

sort(q.begin(),q.end());

sort(v.begin(),v.end());

for (int i=0;i<v.size();i++)

  if (v[i]>q[i]) return 0;

return 1;

}

bool check2(vector<pair<int,int> > S, int x){

vector<int> v;

if (gg==-1){

v=v2;

} else v=v1;

vector<int> q;

for (auto v:S){

q.push_back(ceil((long double)1.0*(v.second-x)/v.first)); 

}

sort(q.begin(),q.end());

sort(v.begin(),v.end());

for (int i=0;i<v.size();i++)

  if (v[i]<q[i]) return 0;

return 1;

}

 

void solve(vector<pair<int,int> > S,int g){

gg=g;

int h=-4e18,t=4e18;

while (h<t){

int mid=(h+t+1)/2;

if (check1(S,mid)) h=mid;

else t=mid-1;

}

mn=min(mn,h); 

h=-4e18,t=4e18;

while (h<t){

int mid=(h+t)/2;

if (mid<0) mid=(h+t-1)/2;

if (check2(S,mid)) t=mid;

else h=mid+1;

}

mx=max(mx,h);

}

signed main(){

ios::sync_with_stdio(false);

int T;

cin>>T;

while (T--){

int n,X1,Y1,Y2,X2;

cin>>n>>X1;

vector<pair<int,int> > S1,S2;

vector<int> jl;

for (int i=1;i<=n;i++){

cin>>Y1>>Y2>>X2;

jl.push_back(Y1); jl.push_back(Y2);

S1.push_back({X2,Y2});

S2.push_back({X2,Y1});

}

v1.clear(); v2.clear();

vector<int> ss;

for (int i=1;i<=4*n;i++){

int x;

cin>>x;

ss.push_back(abs(x));

if (x>0) v1.push_back(x);

else v2.push_back(x);

}

if (v1.size()<n||v2.size()<n){

cout<<-1<<endl;

continue;

}

int k=v1.size()-n;

sort(jl.begin(),jl.end());

reverse(jl.begin(),jl.end());

for (int i=0;i<k;i++)

  S2.push_back({X1,jl[i]});

for (int i=k;i<jl.size();i++)

  S1.push_back({X1,jl[i]});

mn=1e18;

mx=0;

sort(ss.begin(),ss.end());

// if (ss[0]==ss.back()){

// for (auto v:S1){

// mn=min(mn,-v.first*(-ss[0])+v.second);

// mx=max(mx,-v.first*(-ss[0])+v.second);

// }

// for (auto v:S2){

// mn=min(mn,-v.first*(ss[0])+v.second);

// mx=max(mx,-v.first*(ss[0])+v.second);

// }

// } else{

solve(S1,-1); 

solve(S2,1);

// }

cout<<mx-mn<<endl;

}

return 0;

}

 

 

USACO 2024年2月银牌第二题

图片

图片

题解视频分析

代码

下滑查看完整代码解析

#include <bits/stdc++.h>

#define endl " " 

using namespace std;

string s1,s2;

int main(){

ios::sync_with_stdio(false); cin.tie(0); cout.tie(0)

int T;

cin>>T;

while (T--){

int n,m;

cin>>n>>m;

cin>>s1>>s2;

vector<pair<int,int> > ans;

vector<int> v1,v2;

int t3=0;

for (int i=0;i<n;i++)

  if (i==0||s1[i]!=s1[i-1]) v1.push_back(s1[i]-'0');

for (int i=0;i<n;i++)

  if (i==0||s2[i]!=s2[i-1]) v2.push_back(s2[i]-'0');

bool tt=0;

if (v2[0]==v1.back()){

tt=1;

swap(v1,v2);

}

if (v1.size()==1){

tt^=1;

swap(v1,v2);

}

// if (v1.size()<v2.size()) {

//   tt=1;

//   swap(v1,v2);

// }

int k=v2.back();

if (!(v1[0]==v2.back()||(v2.size()==1))){

k=3-k;

ans.push_back({2,3});

v2.pop_back();

}

reverse(v1.begin(),v1.end());

for (auto v:v1){

if (v==k){

ans.push_back({1,2});

} else{

ans.push_back({1,3});

t3++;

}

}

if (v2.size()==1){

if (ans.back().second==3) {

ans.pop_back(); t3--;

}

if (t3>0) ans.push_back({3,1});

} else{

if (ans.back().second==2){

ans.pop_back();

}

reverse(v2.begin(),v2.end());

for (auto v:v2)

  if (v==k) {

  ans.push_back({2,1});

  } else{

  ans.push_back({2,3});

  }

if (ans.back().second==3){

ans.pop_back();

ans.push_back({3,2});

}

cout<<ans.size()<<endl;

if (m==1) continue;

for (auto &v:ans){

if (tt){

if (v.first<=2) v.first=3-v.first;

if (v.second<=2) v.second=3-v.second;

}

cout<<v.first<<" "<<v.second<<endl;

}

}

 

return 0;

}

/*

4

3 2

121

212

*/

 

USACO 2024年2月银牌第三题

 

图片

图片

题解视频分析

代码
下滑查看完整代码解析

#include <bits/stdc++.h>

using namespace std;

#define int long long

const int N=1e6;

int f[N],g[N],h[N];

int n,m,k,a[N][6];

signed main(){

ios::sync_with_stdio(false);

int T;

cin>>T;

while (T--){

cin>>n>>m>>k;

for (int i=1;i<=m;i++)

  for (int j=1;j<=k;j++)

    cin>>a[i][j]; 

for (int i=1;i<=m;i++){

int ans=0;

int mn=1e9;

for (int j=1;j<=k;j++) mn=min(mn,a[i][j]);

for (int j=1;j<=k;j++)

  ans+=a[i][j]%2;

if (ans==k||ans==0){

f[i]=mn;

} else {

int mx[2]={0,0};

for (int j=1;j<=k;j++)

  mx[a[i][j]%2]=max(mx[a[i][j]%2],a[i][j]);

f[i]=-min(mx[0],mx[1]);

}

h[i]=f[i];

f[i]+=f[i-1];

}

g[m+1]=f[m];

for (int i=m;i>=1;i--){

  g[i]=min(g[i+1],f[i]);

}

if (g[1]+n<=0){

cout<<-1<<endl;

continue;

}

vector<int> v;

for (int i=1;i<=m;i++){

int mx=0;

for (int j=1;j<=k;j++)

  if (a[i][j]%2==1) mx=max(mx,a[i][j]);

mx=-mx;

if (mx==0) mx=h[i];

if (mx+n+min(0ll,g[i+1]-f[i])<=0) {

v.push_back(1);

n+=h[i];

} else{

v.push_back(0);

n+=mx;

}

}

for (int i=0;i<v.size();i++){

if (v[i]==0) cout<<"Even";

else cout<<"Odd";

if (i+1!=v.size()) cout<<" ";

}

cout<<endl;

}

 

return 0;

}

图片

4.
 
USACO竞赛备考

 

想要竞赛冲奖,除了实力非常强悍的同学来说,其他都是需要有充足准备的,起码要求是要上750分才是稳稳的。因为USACO竞赛的难度逐级越来越大,专业备考可以帮助选手节省时间的同时,更有机会冲击更高奖项!

 

 

在此次2023年比赛中,犀牛学子斩获了重磅奖项和高分战绩。恭喜以下32位犀牛优秀学子!

图片

32位学员

图片

满分晋级

 

(犀牛学子晋级喜报公示)

图片
 
 
 
 
晋级银牌
 
 
 
 
图片
 
 
 
 
晋级铂金
 
 
 
 
图片
 
 
 
 
晋级金牌
 
 
 
 
图片
 
 
 
 
排位赛满分
 
 
 

犀牛USACO竞赛培训班课,由犀牛金牌导师亲授根据USACO考察方向及评分标准,提供详细科学参赛指导及学习指导帮助。

 

对于USACO的课程体系,经过不断的研究,以及对于⼏百名学⽣的学习能⼒分析,犀牛计算机教研团队最终总结出了⼀套lecture + lab的课程体系⽅案。即知识点授课+ 习题课教学体系,这是⽬前很多美国主流⼤学都在⽤的教育体系,我们经过改良优 化这种体系来⾼效备战USACO考试。

 

精品小班、一对一等多种班型可供选择,线下+线上同步授课,上海、北京、南京、苏州、无锡、深圳、重庆等地都设有校区详细课程内容可咨询网站客服了解~

相关标签:
TOP