1268:【例9.12】完全背包问题 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 32325 通过数: 17348 【题目描述】 设有n 种物品,每种物品有一个重量及一个价值。但每种物品的数量是无限的,同时有一个背包,最大载重量为M ,今从n 种物品中选取若干件(同一种物品可以多次选取),使其重量的和小于等于M ,而价值的和为最大。 【输入】 第一行:两个整数,M (背包容量,M≤200 )和N (物品数量,N≤30 ); 第2..N+1 行:每行二个整数Wi,Ci ,表示每个物品的重量和价值。 【输出】 仅一行,一个数,表示最大总价值。 【输入样例】 10 4 2 1 3 3 4 5 7 9 【输出样例】 max=12 
时间: 2023-05-26 14:03:08 浏览: 14
题意描述
有 $n$ 种物品,每种物品有一个重量 $w_i$ 和价值 $v_i$,数量不限。将它们装入重量为 $M$ 的背包,使得背包内物品的总价值最大。输出该最大总价值。
分析
完全背包问题,可使用 DP 解决,无法使用贪心策略。DP 状态定义为 $f(i,j)$:考虑前 $i$ 件物品,背包容量为 $j$ 时所能获得的最大价值。
考虑 $w_i \le j$ 时,可以将第 $i$ 种物品放入背包。则有 $f(i,j) = f(i,j-w_i)+v_i$。
否则,无法将此物品放入背包,因此最优策略是不选第 $i$ 种物品。则有 $f(i,j) = f(i-1,j)$。
最终答案为 $\max\limits_{j=0}^M f(n,j)$。
在 DP 中,循环枚举的顺序很重要。在完全背包问题中,每件物品可以无限次选取,因此对于每一种物品 $i$,我们应当考虑选取 $0, 1, 2, \ldots, \lfloor \frac{M}{w_i} \rfloor$ 件物品。因此枚举顺序为:先枚举物品,再枚举背包容量。
具体实现中,每种物品的枚举应当采用倒序,即从大到小枚举,这样可以避免多次使用某件物品。
代码实现
代码实现非常简单,只需根据状态转移方程填写 DP 数组即可,时间复杂度为 $O(NM)$。
相关问题
1268:【例9.12】完全背包问题
完全背包问题是一个经典的动态规划问题,在给定背包容量和一组物品的重量和价值的情况下,如何选择物品放入背包中,使得总价值最大化。
举个例子来说明,假设背包容量为C,有n个物品,每个物品的重量分别为w1, w2, ..., wn,对应的价值为v1, v2, ..., vn。我们需要选择哪些物品放入背包中,使得总价值最大。
可以使用动态规划的方法来解决这个问题。定义一个二维数组dp[i][j],其中dp[i][j]表示前i个物品放入容量为j的背包中所能达到的最大价值。
状态转移方程为:
dp[i][j] = max(dp[i-1][j], dp[i][j-wi] + vi)
其中,dp[i-1][j]表示不选择第i个物品,dp[i][j-wi] + vi表示选择第i个物品放入背包中。
最终的结果就是dp[n][C],即前n个物品放入容量为C的背包中所能达到的最大价值。
这个问题可以通过动态规划的思想进行求解,时间复杂度为O(nC)。同时可以通过空间优化,将二维数组优化为一维数组,降低空间复杂度为O(C)。
postman9.12下载
### 回答1:
Postman是一款常用的API测试工具,而Postman 9.12是其较旧的版本。想要下载Postman 9.12,可以在Postman官网找到历史版本进行下载。
具体方法如下:
首先,访问Postman官网(https://www.postman.com/ ),在网站首页点击“Download”按钮。
接着,在下载页面中,找到“Looking for a specific version?”这一栏。在“Version”下拉菜单中选择“9.12.2”(即Postman 9.12的最新版本),然后选择适合的操作系统和架构。
在选择完毕后,即可点击“Download”按钮开始下载Postman 9.12的安装包。
安装完成后,即可通过Postman 9.12来进行API接口的测试和调试。
需要注意的是,由于Postman 9.12是较老的版本,可能存在一些兼容性和功能上的限制,建议用户尽量使用最新的Postman版本进行测试和开发。
### 回答2:
要下载postman 9.12,您可以按照以下步骤进行操作。
1. 打开您的网络浏览器,例如谷歌浏览器、火狐浏览器等。
2. 在浏览器的搜索栏中输入“postman 9.12下载”并按下回车键。
3. 您将看到多个搜索结果,选择一个可信和官方的下载网站。例如,您可以选择postman官方网站:https://www.postman.com/。
4. 在选择的网站上找到下载按钮或链接。通常,它会在首页或产品页面上显示。点击下载按钮或链接。
5. 它可能会要求您提供一些信息,例如您的电子邮件地址,以便将下载链接发送给您。填写所需的信息并点击提交或下载按钮。
6. 一旦您完成了上述步骤,下载将自动开始。下载速度取决于您的互联网连接速度。
7. 下载完成后,找到您的下载文件夹,并打开下载的安装文件。
8. 运行安装文件,并按照屏幕上的提示进行安装。通常,只需点击“下一步”或“同意”按钮,直到安装完成。
9. 安装完成后,启动postman应用程序。您现在已成功下载和安装postman 9.12。
请注意,在下载和安装任何软件之前,最好使用可信和官方网站。这样可以确保您获取的是最新版本的软件,并且不会下载到恶意软件。
相关推荐














