列表

详情


NC255193. 游游的水果大礼包

描述

游游有n个苹果,m个桃子。她可以把2个苹果和1个桃子组成价值a元的一号水果大礼包,也可以把1个苹果和2个桃子组成价值b元的二号水果大礼包。游游想知道,自己最多能组成多少价值总和的大礼包?

输入描述

四个正整数n,m,a,b,用空格隔开。分别代表苹果的数量、桃子的数量、一号大礼包价值、二号大礼包价值。

输出描述

一个整数,代表大礼包的最大价值总和。

示例1

输入:

3 4 1 2

输出:

4

说明:

组成两个二号水果大礼包,使用了2个苹果和4个桃子。总价值为4。

示例2

输入:

1 1 5 6

输出:

0

说明:

显然无法组合成任意一个大礼包

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C++(clang++ 11.0.1) 解法, 执行用时: 4ms, 内存消耗: 464K, 提交时间: 2023-07-16 20:05:13

#include<bits/stdc++.h>
using namespace std;int main(){long long n,m,a,b,maxn=0,i;cin>>n>>m>>a>>b;for(i=0;i<=n/2&&i<=m;i++){maxn=max(maxn,a*i+b*min((m-i)/2,n-i*2));}cout<<maxn;}

pypy3 解法, 执行用时: 81ms, 内存消耗: 21484K, 提交时间: 2023-07-16 22:26:36

n, m, a, b = map(int, input().split())
x = min(n // 2, m)
ans = 0
for i in range(x + 1):
    ans = max(a * i + min(n - 2 * i, (m - i) // 2) * b, ans)
print(ans)

Python3 解法, 执行用时: 378ms, 内存消耗: 4556K, 提交时间: 2023-07-16 22:51:43

n, m, a, b = map(int, input().split())
print(max(min(i, m) * a + min(n - (i * 2), (m-i)//2) * b for i in range(n//2+1)))

上一题