A5093 恰好装满的01背包

暂无评定 传统题 动态规划 上传者
时间限制2000ms
内存限制256MiB
通过 / 提交2/7

A5093恰好装满的01背包

暂无评定 传统题 动态规划 上传者
时间限制2000ms
内存限制256MiB
通过 / 提交2/7

恰好装满的 01 背包

题目描述

你有一个容量为 VV 的背包,以及 nn 件物品。第 ii 件物品的体积为 viv_i,价值为 wiw_i。

每件物品最多只能选择一次,物品不能拆分。即使两件物品的体积和价值都相同,它们仍然是两件不同的物品,可以分别选择。

你需要选择若干件物品,使它们的总体积恰好等于 VV。在所有满足条件的选择方案中,求最大总价值。

如果无法恰好装满背包,输出 -1。

输入格式

第一行包含两个整数 n,Vn,V,分别表示物品数量和背包容量。

接下来 nn 行,第 ii 行包含两个整数 vi,wiv_i,w_i,分别表示第 ii 件物品的体积和价值。

输出格式

输出一个整数,表示恰好装满背包时的最大总价值。如果无法恰好装满,输出 -1。

样例 1

输入

4 5
2 3
3 4
5 6
1 1

输出

7

说明

选择第 1、2 件物品,总体积为 2+3=52+3=5,总价值为 3+4=73+4=7。选择第 3 件物品也能恰好装满,但总价值只有 66。

样例 2

输入

1 3
2 3

输出

-1

说明

唯一一件物品的体积为 22,无法恰好装满容量为 33 的背包。

样例 3

输入

2 5
2 0
3 0

输出

0

说明

选择两件物品可以恰好装满,总价值为 00。价值为 00 的方案也是合法方案。

数据范围

对于所有测试数据,保证:

  • 1≤n≤50001\le n\le5000。
  • 0≤V≤50000\le V\le5000。
  • 1≤vi≤50001\le v_i\le5000。
  • 0≤wi≤1060\le w_i\le10^6。
  • 所有输入均为整数。

当 V=0V=0 时,可以不选择任何物品,答案为 00。

答案可能超过 32 位有符号整数的范围,请使用 64 位整数保存总价值。