Advertisement

上海计算机学会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束百合花,花费2
8=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)

还没有任何评论哟~