【秋招笔试】8.11大疆秋招(第四套)-三语言题解

🍭 大家好这里是 春秋招笔试突围,一起备战大厂笔试

💻 ACM金牌团队🏅️ | 多次AK大厂笔试 | 编程一对一辅导

✨ 本系列打算持续跟新 春秋招笔试题

👏 感谢大家的订阅➕ 和 喜欢💗 和 手里的小花花🌸

✨ 笔试合集传送们 -> 🧷春秋招笔试合集

🍒 本专栏已收集 50+套笔试题,笔试真题 会在第一时间跟新

🍹 近期会进行一波价格调整,没订阅的朋友抓紧冲!!!

alt

🪔 大疆的秋招第一场笔试,来啦!!!

🍥 大疆有很多套卷,每套卷子有 0/1/2 道编程题,题目内容不一定相同,这样 选择题、填空、问答 的比重就占很大了。

🌈 原题题目描述有点怪,本质其实就是01背包。

💈 微型仓储机器人的最大装载量

问题描述

K小姐正在开发一款微型仓储机器人。这款机器人配备了一块容量为 38 单位电量的微型电池,用于执行仓库内的物品运输任务。机器人的耗电量与运输物品的重量和运输距离成正比,每单位重量每单位距离的耗电量为 1 单位电量。

现在,仓库管理系统收到了 件物品的运输请求,每件物品都有其特定的重量和需要运输的距离。K小姐希望能够计算出在一次充电周期内,这款微型仓储机器人能够运输的最大物品重量。

你的任务是编写一个程序,帮助 K小姐确定机器人在一次充电周期内能够运输的最大物品重量。

输入格式

第一行包含两个整数 ,其中 可以忽略, 表示需要运输的物品数量。

第二行包含 个整数,表示每件物品的重量。

第三行包含 个整数,表示每件物品需要运输的距离。

输出格式

输出一个整数,表示机器人在一次充电周期内能够运输的最大物品重量。如果无法运输任何物品,则输出 0。

样例输入

2 3
5 5 12
3 1 1

样例输出

12

数据范围

  • 物品重量
  • 运输距离

题解

这个问题是一个 0-1 背包问题的变种。

定义 表示使用 单位电量能够运输的最大物品重量。对于每件物品,我们可以选择运输或不运输。

状态转移方程为:

其中 分别表示第 件物品的重量和运输距离。

我们需要从大到小遍历电量,以避免重复选择同一件物品。最终, 就是我们要求的答案。

时间复杂度:,其中 是物品数量。 空间复杂度:

参考代码

  • Python
def max_load(n, weights, distances):
    # 初始化动态规划数组
    dp = [0] * 39
    
    # 遍历每件物品
    for i in range(n):
        # 从大到小遍历电量
        for j in range(38, weights[i] * distances[i] - 1, -1):
            # 更新状态
            dp[j] = max(dp[j], dp[j - weights[i] * distances[i]] + weights[i])
    
    # 返回最大装载量
    return dp[38]

# 读取输入
_, n = map(int, input().split())
weights = list(map(int, input().split()))
distances = list(map(int, input().sp

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

学长刷题笔记 文章被收录于专栏

这里收集了超全的刷题笔记,欢迎大家的订阅,会持续跟新的

全部评论
坏了,买了发现没第二题lru的
点赞 回复 分享
发布于 08-17 15:34 上海

相关推荐

唯一的大厂有希望的 还挂了 真的难受啊😭 这就是双非的命了 虽然我已经提前做好准备了
紧勾追:放平心态叭www,我快手两轮都终面挂,字节也终面挂。后续等别人签完还有一些hc释放的
点赞 评论 收藏
分享
3 13 评论
分享
牛客网
牛客企业服务