[华为OD] C卷 货运 老李是货运公司承运人,老李的货车额定载货重量为Wt 100

题目:

老李是货运公司承运人,老李的货车额定载货重量为Wt。现有两种货物、货物A单件重量为 

wa,单件运费利为pa,货物B单件重量为wb,单件运费利润为pb•老李每次发车时载货总 

重量刚好为货车额定的载货重量wt,车上必须同时有货物A和货物B,货物A、B不可切割。 

老李单车次满载运输可获得的最高利润是多少?

输入描述

第一列输入为货物A的单件重量wa, 0 < wa< 10000

第二列输入为货物B的单件重量wb, 0< wb < 10000

第三列输入为货车的额定载重wt, 0 < wt < 100000

第四列输入为货物A的单件运费利pa, 0<pa< 1000

第五列输入为货物B的单件运费利润pb, 0 < pb< 1000

输出描述

单次满载运输的最高利润

示例1:

输入

10 8 36 15 7

输出

44

示例2:

输入 

11211 

输出

2

题解:

比较简单,因为是最大值,所以尽量满载,假设a的数量为count,count>1,

那么因为b必须有一个,所以b的数量就是 (totalweight - weightA*count)/weightB

a最大数量就是(totalWeight-weightB)/weightA,然后按照a数量从1到最大值遍历利润,找到最大值就可以了

代码:

import java.util.Scanner;

public class CarWeight {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String input_str = in.nextLine();
        String[] tmp2 = input_str.split(" ");
        int[] nums = new int[tmp2.length];
        for (int i = 0; i < tmp2.length; i++) {
            nums[i] = Integer.parseInt(tmp2[i]);
        }
        int wa = nums[0];
        int wb = nums[1];
        int pa = nums[3];
        int pb = nums[4];
        int wt = nums[2];

        int countA = 1;
        int countAmax = (wt - wb) / wa;//b物品至少有一个
        int countb = 1;
        int result = 0;
        for (int i = 1; i <= countAmax; i++) {
            countb = (wt - i * wa) / wb;
            result = Math.max(result, pa * i + pb * countb);
        }

        System.out.println(result);
    }
}




验证:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值