拿下技术面上传简历

0-1 背包精确求解。实例 A:n=100,W=10^9,每个 w_i 可达 10^9,v_i<=1000;实例 B:n=40,W=10^9,w_i 和 v_i 可达 10^12。单次预算 1 秒。你会分别选什么算法?请给出状态定义、复杂度,并说明为什么不能都写成 dp[W]。

数据结构与算法动态规划与贪心3-5 年知识点 1 个

面试官在考什么

判断候选人能否根据 W、价值上界、n 的大小在伪多项式 DP 和 meet-in-the-middle 之间做精确算法选型,而不是背模板。

背包问题

回答框架 · 前两步

  1. 实例 A:sum v_i <= 100*1000=10^5,用价值 DP,dp[v]=达到价值 v 的最小重量,时间 O(n*sumV),空间 O(sumV)。
  2. 实例 B:n=40 适合 meet-in-the-middle,枚举两半各 2^20 个子集,按重量排序后二分/双指针合并找 w1+w2<=W 的最大价值。

还有 3 条答案要点、 3 层追问、 5 个常见坑, 以及针对你简历的追问路径,在定制报告里。

上传简历,生成我的题库先看示例报告

延伸阅读

想看这个方向的整体准备路线? 进入「数据结构与算法」方向页

同一能力域的其他题