0/1背包-最值(模板题目)


Submit solution

Points: 100
Time limit: 1.0s
Memory limit: 200M

Author:
Problem type
Allowed languages
C, C++

🎒 0/1 背包问题 —— 太郎的物品选择

📖 题目描述

太郎有 N 件物品,每件物品都有:

  • 重量:w[i]
  • 价值:v[i]

他有一个容量为 W 的背包,太郎希望从这些物品中选出若干件装入背包中,使得:

选中的物品总重量 ≤ W,并且价值总和最大。


📌 输入格式

输入从标准输入读取,格式如下:


N W
w₁ v₁
w₂ v₂
...
wₙ vₙ
  • N:物品数量 (\(1 \le N \le 100\))
  • W:背包容量 (\(1 \le W \le 10^5\))
  • w[i]:第 i 件物品的重量 (\(1 \le w[i] \le W\))
  • v[i]:第 i 件物品的价值 (\(1 \le v[i] \le 10^9\))

📤 输出格式

输出一个整数,表示太郎能带回家的最大总价值。


📘 输入输出样例

样例 1

输入:
3 8
3 30
4 50
5 60

输出:
90

解释:
选择物品 1 和 3,重量之和 3 + 5 = 8,价值 30 + 60 = 90。


样例 2

输入:
5 5
1 1000000000
1 1000000000
1 1000000000
1 1000000000
1 1000000000

输出:
5000000000

提示:
答案可能超过 32 位整数范围(注意使用 long long 类型)。


样例 3

输入:
6 15
6 5
5 6
6 4
6 6
3 5
7 2

输出:
17

解释:
选择物品 2、4、5,重量和为 5 + 6 + 3 = 14,价值和为 6 + 6 + 5 = 17。


Comments

There are no comments at the moment.