[算法题]游游的水果大礼包

题目链接: 游游的水果大礼包

根据题意得知一号水果大礼包由2个苹果和1个桃子组成, 价值为 a 元, 二号水果大礼包由1个苹果和2个桃子组成, 价值为 b 元, 假设一号水果大礼包有 x 个, 二号水果大礼包有 y 个, 那么价值总和为 x*a+y*b, 但是不止一种水果大礼包组合方式, 所以枚举各种可能, 挑选出价值总和最大的.

假设苹果有 n 个, 桃子有 m 个, x 表示一号水果大礼包的个数, y 表示二号水果大礼包的个数, 那么可以得出:

x = min(n / 2, m)

y = min(n - 2 * x, (m - x) / 2)

价值总和: x * a + y * b 

枚举出各种能组成的方案比较出最大的价值总和即可, 题解代码如下:

#include <iostream>
using namespace std;

int main()
{
    int n, m, a, b;
    cin >> n >> m >> a >> b;
    //x:a元礼包的个数,y:b元礼包的个数,总价值:x*a+y*b
    long x, y;
    long price = 0;
    for(int i = 0; i <= n; ++i)
    {
        x = min(i / 2, m);
        y = min(n - 2 * x, (m - x) / 2);
        price = max(price, x * a + y * b);
    }
    cout << price << endl;
    return 0;
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值