小欧准备去商店买东西,商店中有 n 个物品从左向右摆成一排,第 i 个物品的体积为 a_i ,价值为 b_i 。小欧有一个容量为 x 的背包,她每次看到能装进背包里的物品都会装进去,如果装不进去就跳过这个物品。 小欧想知道,她总共能买多少价值的物品?
第一行输入两个正整数 n,x ,代表物品数量和背包容量。 接下来的 n 行,每行输入两个正整数 a_i 和 b_i ,代表每个物品的体积和价值。 1≤ n ≤ 10^5 1≤ a_i,b_i,x ≤ 10^9
一个整数,代表总价值之和。
3 5 4 3 2 5 1 3
6
考点:动态规划
数据规模 n ≤ 1e5 | 限制 1 秒 / 256MB | 标准输入输出
参考方向:动态规划
把问题拆成子问题,用状态表示「已处理到哪儿」,靠转移方程递推。
思路框架(动态规划 通法 · 非本题专属)
实现要点:一般是「先枚举阶段,再枚举状态,最后枚举决策」三层循环;空间大时可滚动数组优化。
复杂度:时间 O(状态数 × 转移代价) | 空间 O(状态数)
该范式的通法易错点
对照本题
本题在源数据中没有官方考点标签,方向由题面特征推断,仅供参考。
样例 1:输入 3 5 / 4 3 / 2 5 / 1 3 → 输出 6
先买第一个物品,价值为 3。
遇到第二个物品时,此时剩余容量为 1,无法购买。
然后买第三个物品,价值为 3。
解析由校招宝本地引擎整理(依据源站考点标签 / 人工判题标注 / 题面规模信号),非官方题解,仅供思路参考。
本题来源:2024年秋招-OPPO-算法岗笔试。