USACO 2024 Feb Bronze铜组题解

2024-03-01 02:12
文章标签 2024 题解 usaco bronze feb 铜组

本文主要是介绍USACO 2024 Feb Bronze铜组题解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

闲话:今天是4年一度的奇观——2月29日!(地球人都知道)

所以为了纪念这个特殊的日子,我决定倒着讲。这是什么奇怪的规矩?(雾

Maximizing Productivity:

二分即可。

#include <bits/stdc++.h>
using namespace std;
const int maxn=200005;
int c[maxn],t[maxn],opt[maxn];
int main(){int n,q;cin>>n>>q;for(int i=1;i<=n;i++)cin>>c[i];for(int i=1;i<=n;i++)cin>>t[i];for(int i=1;i<=n;i++){if(c[i]>t[i])opt[i]=c[i]-t[i];elseopt[i]=-1;}sort(opt+1,opt+n+1,less<int>());while(q--){int v,s;cin>>v>>s;int pos=upper_bound(opt+1,opt+n+1,s)-opt;if((n-pos+1)>=v)cout<<"YES"<<endl;elsecout<<"NO"<<endl;}return 0;
}

Milk Exchange:

首先,我们可以\Theta (nm)模拟。

#include <bits/stdc++.h>
using namespace std;
int main(){int N,M;cin>>N>>M;string s;cin>>s;vector<long long> a(N),limit(N);for(int i=0;i<N;i++){cin>>a[i];limit[i]=a[i];}while(M--){vector<long long> cur=a;for(int i=0;i<N;i++){if(a[i]>=1){cur[i]--;if(s[i]=='L')cur[(i-1+N)%N]++;elsecur[(i+1)%N]++;}}for(int i=0;i<N;i++)cur[i]=min(cur[i],limit[i]);a=cur;}cout<<accumulate(a.begin(),a.end(),0LL)<<endl;return 0;
}

但是很显然,你会得到一个完美的TLE like this:

所以,怎么优化?

如果s_{i}是R,s_{i+1}是L,那么我就叫这两个操作方向对应的两头奶牛称为两头"亏损对"这意味着,只要有牛奶给"亏损对",这部分奶必然会溢出。所以对于每一个"亏损对",只要求出可能被传递给它左右边的奶量,分别对m取最小值即可求出每个亏损对溢出的奶量。

//十年OI一场空,不开long long开祖宗
#include <bits/stdc++.h>
using namespace std;
int main(){int N,M;cin>>N>>M;string s;cin>>s;vector<int> a(N);for(int i=0;i<N;i++)cin>>a[i];vector<bool> badl(N),badr(N);for(int i=0;i<N;i++){if(s[i]=='R' && s[(i+1)%N]=='L'){badl[i]=true;badr[(i+1)%N]=true;}}int ans=accumulate(a.begin(),a.end(),0LL);for(int i=0;i<N;i++){int sum=0;if(badl[i]){int j=(i-1+N)%N;while(s[j]=='R'){sum+=a[j--];if(j<0)j+=N;}}if(badr[i]){int j=(i+1)%N;while(s[j]=='L'){sum+=a[j++];if(j>=N)j-=N;}}ans-=min(sum,M);}cout<<ans<<endl;return 0;
}

Palindrome Game:

这是一道结论题,但是我这种傻子不可能猜到的

先说结论:如果n是整十数,E胜,否则B胜。

首先,1到9都回文,所以此时先手必胜。如果10<n<20呢?很简单,先手直接把n变成10就赢了。所以,整十数是一个必胜点,每次踩到上面就可以了。代码就很简单啦↓

#include <bits/stdc++.h>
using namespace std;
int main(){int tc;cin>>tc;while(tc--){int S;//注意开stringcin>>S;if(S%10==0)cout<<'E'<<endl;elsecout<<'B'<<endl;}return 0;
}

以上就是本期的全部内容了。我们下期再见ヾ( ̄▽ ̄)Bye~Bye~

友情提醒:本期的全部代码都有问题,请不要无脑Ctrl C+Ctrl V

这篇关于USACO 2024 Feb Bronze铜组题解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/760860

相关文章

2024年流动式起重机司机证模拟考试题库及流动式起重机司机理论考试试题

题库来源:安全生产模拟考试一点通公众号小程序 2024年流动式起重机司机证模拟考试题库及流动式起重机司机理论考试试题是由安全生产模拟考试一点通提供,流动式起重机司机证模拟考试题库是根据流动式起重机司机最新版教材,流动式起重机司机大纲整理而成(含2024年流动式起重机司机证模拟考试题库及流动式起重机司机理论考试试题参考答案和部分工种参考解析),掌握本资料和学校方法,考试容易。流动式起重机司机考试技

【专题】2024飞行汽车技术全景报告合集PDF分享(附原数据表)

原文链接: https://tecdat.cn/?p=37628 6月16日,小鹏汇天旅航者X2在北京大兴国际机场临空经济区完成首飞,这也是小鹏汇天的产品在京津冀地区进行的首次飞行。小鹏汇天方面还表示,公司准备量产,并计划今年四季度开启预售小鹏汇天分体式飞行汽车,探索分体式飞行汽车城际通勤。阅读原文,获取专题报告合集全文,解锁文末271份飞行汽车相关行业研究报告。 据悉,业内人士对飞行汽车行业

高效录音转文字:2024年四大工具精选!

在快节奏的工作生活中,能够快速将录音转换成文字是一项非常实用的能力。特别是在需要记录会议纪要、讲座内容或者是采访素材的时候,一款优秀的在线录音转文字工具能派上大用场。以下推荐几个好用的录音转文字工具! 365在线转文字 直达链接:https://www.pdf365.cn/ 365在线转文字是一款提供在线录音转文字服务的工具,它以其高效、便捷的特点受到用户的青睐。用户无需下载安装任何软件,只

usaco 1.3 Prime Cryptarithm(简单哈希表暴搜剪枝)

思路: 1. 用一个 hash[ ] 数组存放输入的数字,令 hash[ tmp ]=1 。 2. 一个自定义函数 check( ) ,检查各位是否为输入的数字。 3. 暴搜。第一行数从 100到999,第二行数从 10到99。 4. 剪枝。 代码: /*ID: who jayLANG: C++TASK: crypt1*/#include<stdio.h>bool h

usaco 1.3 Calf Flac(暴搜)

思路是暴搜。 需要注意的地方是输入的方法,以及输出时的换行。 代码: /*ID: who jayLANG: C++TASK: calfflac*/#include<stdio.h>#include<string.h>#include<math.h>int main(){freopen("calfflac.in","r",stdin);freopen("calfflac.ou

usaco 1.3 Barn Repair(贪心)

思路:用上M块木板时有 M-1 个间隙。目标是让总间隙最大。将相邻两个有牛的牛棚之间间隔的牛棚数排序,选取最大的M-1个作为间隙,其余地方用木板盖住。 做法: 1.若,板(M) 的数目大于或等于 牛棚中有牛的数目(C),则 目测 给每个牛牛发一个板就为最小的需求~ 2.否则,先对 牛牛们的门牌号排序,然后 用一个数组 blank[ ] 记录两门牌号之间的距离,然后 用数组 an

usaco 1.3 Mixing Milk (结构体排序 qsort) and hdu 2020(sort)

到了这题学会了结构体排序 于是回去修改了 1.2 milking cows 的算法~ 结构体排序核心: 1.结构体定义 struct Milk{int price;int milks;}milk[5000]; 2.自定义的比较函数,若返回值为正,qsort 函数判定a>b ;为负,a<b;为0,a==b; int milkcmp(const void *va,c

usaco 1.2 Palindromic Squares(进制转化)

考察进制转化 注意一些细节就可以了 直接上代码: /*ID: who jayLANG: C++TASK: palsquare*/#include<stdio.h>int x[20],xlen,y[20],ylen,B;void change(int n){int m;m=n;xlen=0;while(m){x[++xlen]=m%B;m/=B;}m=n*n;ylen=0;whi

usaco 1.2 Name That Number(数字字母转化)

巧妙的利用code[b[0]-'A'] 将字符ABC...Z转换为数字 需要注意的是重新开一个数组 c [ ] 存储字符串 应人为的在末尾附上 ‘ \ 0 ’ 详见代码: /*ID: who jayLANG: C++TASK: namenum*/#include<stdio.h>#include<string.h>int main(){FILE *fin = fopen (

usaco 1.2 Milking Cows(类hash表)

第一种思路被卡了时间 到第二种思路的时候就觉得第一种思路太坑爹了 代码又长又臭还超时!! 第一种思路:我不知道为什么最后一组数据会被卡 超时超了0.2s左右 大概想法是 快排加一个遍历 先将开始时间按升序排好 然后开始遍历比较 1 若 下一个开始beg[i] 小于 tem_end 则说明本组数据与上组数据是在连续的一个区间 取max( ed[i],tem_end ) 2 反之 这个