Atcoder ABC338 C - Leftover Recipes

Leftover Recipes(剩下的食谱)

时间限制:2s 内存限制:1024MB

【原题地址】

点击此处跳转至原题

【问题描述】

你的冰箱里有 N 种配料。我们称它们为配料1、…和配料 N。您有 Qi 克配料 i 。

您可以制作两种菜肴。制作一份 A 菜肴,需要 Ai 克的配料 i (1≤i≤N)。制作一份 B 菜肴,每种材料需要 Bi 克 i 。每种菜只能做整数份。

仅使用冰箱中的配料,你最多可以制作多少份菜肴?

【输入格式】

输入内容由标准输入法提供,格式如下
N
Q1​ Q2​ … QN
​A1 A2​ … AN
B1 B2​ … BN

1 ≤ N ≤ 10
1 ≤ Qi​ ≤ 10^6
0 ≤ Ai ≤ 10^6
有一个 i 使得 Ai ≥1 .
0 ≤ Bi​ ≤ 10^6
有一个 i ,Bi ≥ 1 。
所有输入值均为整数。

【输出格式】

假设您最多可以制作 S 份菜肴,请打印整数 S 。

【样例输入】

样例一、

2
800 300
100 100
200 10

样例二、

2
800 300
100 0
0 10

【样例输出】

样例一、

5

样例二、

38

【样例说明】

对于第一个测试用例,这台冰箱有 800 克配料 1 和 300 克配料 2 。

你可以用 100 克配料 1 和 100 克配料 2 制作一份 A 菜,用 200 克配料 1 和 10 克配料 2 制作一份 B 菜。

要制作两份 A 菜和三份 B 菜,需要 100 × 2 + 200 × 3 = 800 克配料 1 和 100 × 2 + 10 × 3 = 230 克配料 2 ,这两种配料都不会超过冰箱里的用量。这样一共可以做 5 份菜肴,但不可能做 6 份,所以答案是 5 。

对于第二个测试用例,您可以用 800 克配料 1 制作 8 份 A 菜,用 300 克配料 2 制作 30 份 B 菜,总共可以制作 38 份。

【解题思路】

老汉使用到的是贪心的解题方式

本题是求在给定的配料中所能做出的最大菜肴数。
在对菜肴数求解的过程,肯定是需要比对是否可以做成,菜品数是否为最大,如果逐一去比对所有可能,时间上是不允许的,因此我们贪婪的去求当菜肴 A 制作0份~所能制作的最大份数时,分别能制作最多多少B菜肴,以及总和数最大的一个。

代码注释有详细过程

【代码】

package ABC338_C_LeftoverRecipes;

import 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王老汉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值