布置会场
内存限制: 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束双拼花朵,花费12*8=96元,
再购买2束百合花,花费2*8=16元,
总计112元。
输入:
8 6
8 10 12
输出:
124
说明:
直接购买8束百合+6束郁金香,共计8*8+6*10=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;
}
cpp
运行