【笔试刷题】联想-2026.04.08-改编真题

✅ 春招备战指南 ✅

💡 学习建议:

  • 先尝试独立解题
  • 对照解析查漏补缺

🧸 题面描述背景等均已深度改编,做法和题目本质基本保持一致。

🍹 感谢各位朋友们的订阅,你们的支持是我们创作的最大动力

🌸 目前本专栏已经上线200+套真题改编解析,后续会持续更新的

春秋招笔试机考招合集 -> 互联网必备刷题宝典🔗

联想-2026.04.08

联想这场题目数量不多,风格偏传统。第一题是标准背包问题;第二题需要维护后缀信息后进行分数比较,思路不复杂,但实现时细节处理占主要难度。

1. 灰原哀的试剂筛选

问题描述

灰原哀在撤离临时实验室前,需要从储物柜中挑选一批试剂带走。

储物柜共有 瓶试剂,第 瓶的重量为 ,研究价值为 。携行包的承重上限为 ,所有带走的试剂总重量不得超过这一限制。

每瓶试剂只能携带一份,不可拆分。请计算在不超重的前提下,能够取得的最大研究价值。

输入格式

第一行输入两个整数 ,分别表示承重上限与试剂总数。

接下来 行,每行输入两个整数 ,表示第 瓶试剂的重量与研究价值。

输出格式

输出一行一个整数,表示总重量不超过 时能够获得的最大研究价值。

样例输入

8 4
2 3
3 4
4 5
5 8

样例输出

12

样例解释

  • 选取重量为 3、价值为 4 的试剂,以及重量为 5、价值为 8 的试剂,总重量为 8,总价值为 12,为当前约束下的最优方案。

数据范围

题解

本题为标准 背包问题。容量上限 ,物品数 ,使用一维滚动数组即可完成求解。

状态设计

定义 为背包容量不超过 时可获得的最大总价值。初始令所有 ,最终答案为

状态转移

对于重量为 、价值为 的试剂,选与不选分别对应两种状态来源:

  • 不选: 保持原值
  • 选:

取两者较大值,得转移方程:

枚举顺序

每瓶试剂仅能使用一次,因此容量维度需从大到小枚举。这样在计算 时,所引用的 仍为本轮更新前的值,同一物品不会被重复计入,符合 背包的约束语义。

复杂度分析

  • 时间复杂度:
  • 空间复杂度:

如需调整柯南人物(如换成柯南、兰、博士等场景),或修改题解讲解的详略程度,欢迎说明。

参考代码(Python)

import sys

def main():
    data = sys.stdin.buffer.read().split()
    it = iter(data)
    total, num = int(next(it)), int(next(it))
    best = [0] * (total + 1)
    for _ in range(num):
        weight = int(next(it))
        value = int(next(it))
        for cap in range(total, weight - 1, -1):
            new_val = best[cap - weight] + value
            if new_val > best[cap]:
                best[cap] = new_val
    sys.stdout.write(str(best[total]))

if __name__ == "__main__":
    main()

2. 最优截断位置

问题描述

灰原哀正在分析一份长度为 的信号记录,各位置强度依次为

对于参数 ,系统忽略前 个信号,取后缀 ,

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

互联网刷题笔试宝典 文章被收录于专栏

互联网刷题笔试宝典,这里涵盖了市面上大部分的笔试题合集,希望助大家春秋招一臂之力

全部评论

相关推荐

03-08 18:11
门头沟学院 Java
Java抽象小篮子:海投就完事了,简历没什么问题,最大问题是学历
点赞 评论 收藏
分享
想踩缝纫机的小师弟练...:不理解你们这些人,要放记录就把对方公司名字放出来啊。不然怎么网暴他们
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务