题目链接: 游游的水果大礼包
根据题意得知一号水果大礼包由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*blong 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;
}