【笔试刷题】联想-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%内容,订阅专栏后可继续查看/也可单篇购买
互联网刷题笔试宝典,这里涵盖了市面上大部分的笔试题合集,希望助大家春秋招一臂之力
查看4道真题和解析