上海计算机学会2021年7月月赛C++丙组T1布置会场
发布时间
阅读量:
阅读量
布置会场
内存限制: 256 Mb时间限制: 1000 ms
题目描述
激动人心的 2021YACS线下赛 下个月就要举办了!为了欢迎各位OI选手,主办方决定用百合花 和郁金香 两种花朵布置场地。
负责比赛组织的小爱老师了解到,花店的销售方式如下:
- 一束百合花的价格为a元
- 一束郁金香的价格为b元
- 半束百合花+半束郁金香的双拼花束 价格为c元
小爱老师可以购买两份双拼花束后,将他重新组合成一束百合花+一束郁金香。已知布置会场需要用到x束百合花与y束郁金香,请问小爱老师购买花朵最少花费需多少元?
输入格式
输入共两行:
第一行:两个正整数表示需要的花束数量x,y
第二行:三个正整数表示花束费用a,b,c
输出格式
输出共一行,一个正整数,表示小爱老师购买花朵最少花费需多少元。
数据范围
- 对于30%的数据:1≤x,y≤100,1≤a,b,c≤10
- 对于100%的数据:1≤x,y≤1000,1≤a,b,c≤500
样例数据
输入:
8 6
8 10 8
输出:
112
说明:
先购买12束双拼花朵,花费128=96元,
再购买2束百合花,花费28=16元,
总计112元。
输入:
8 6
8 10 12
输出:
124
说明:
直接购买8束百合+6束郁金香,共计88+610=124元。
解析:三种方案取最小值
1.都用双拼花
2.分别买百合花和郁金香
3.先买双拼花,再买单的补齐
详见代码:
#include <bits/stdc++.h>
using namespace std;
int main(){
int x,y;
int a,b,c;
cin>>x>>y;
cin>>a>>b>>c;
int ans1,ans2,ans3;
ans1=max(x,y)*c*2;//都买双拼花
ans2=min(x,y)*c*2;//先买双拼花
if (x>y){//再补齐
ans2+=(x-y)*a;
}else{
ans2+=(y-x)*b;
}
ans3=a*x+b*y;//不买双拼花
cout<<min(ans1,min(ans2,ans3));//取最小值
return 0;
}
全部评论 (0)
还没有任何评论哟~
