首页 > 编程语言 >219. 完全背包问题(挑战程序设计竞赛)

219. 完全背包问题(挑战程序设计竞赛)

时间:2023-01-03 11:35:22浏览次数:57  
标签:背包 int 219 物品 程序设计 100 include dp

地址 https://www.papamelon.com/problem/219

有 n 个重量和价值分别为 w_i, v_i 的物品。从这些物品中挑选出总重量不超过 W 的物品,求所有挑选方案中价值总和的最大值。
在这里,每种物品可以挑选任意多件。

输入
输入数据第一行有两个整数 n 和 W,接下来会有 n 行,分别表示 n 个物品的对应的 w_i和 v_i
1≤n≤100
1≤wi≤100
1≤vi≤100
1≤W≤10000
输出
输出一个整数, 表示题目要求的最大价值.
样例 1
输入
3 7
3 4
4 5
2 3
输出
10

解答
动态规划 dp[i][j] 表示前i个物品使用了j的重量下能达到的最大价值

TLE版本代码 时间复杂度是O(n*W^2)

#include <iostream>
#include <memory.h>

using namespace std;

const int N = 1010;
int w[N], v[N];
int W, n;
int dp[N][10010];


int main()
{
	cin >> n >> W;
	memset(dp,0,sizeof dp);
	for (int i = 1; i <= n; i++) {
		cin >> w[i] >> v[i];
	}
	for (int i = 1; i <= n; i++) {
		for (int j = 1; j <= W; j++) {
			for (int k = 0; k * w[i] <= W; k++) {
				if (j >= k * w[i]) {
					dp[i][j] = max(dp[i][j], dp[i-1][j - k * w[i]] + k * v[i]);
				}
			}
		}
	}

	cout << dp[n][W] << endl;

 
	return 0;
}

标签:背包,int,219,物品,程序设计,100,include,dp
From: https://www.cnblogs.com/itdef/p/17021571.html

相关文章

  • 完全背包的01背包做法
    众所周知,完全背包可以用01背包的做法做有一天,我想到一个很蠢的idea:如果把完全背包中的物品数量×1000,不就可以用01背包的做法了?!#include<bits/stdc++.h>#definelllo......
  • 01背包详解
    01背包题目描述有N件物品和一个容量是V的背包。每件物品只能使用一次。第i件物品的体积是vi,价值是wi。求解将哪些物品装入背包,可使这些物品的总体积不超过背包......
  • 220. 最长公共子序列问题(挑战程序设计竞赛)
    地址https://www.papamelon.com/problem/220给定两个字符串s_1s_2...s_n和t_1t_2...t_n.求出这两个字符串的最长公共子序列的长度。输入输入第一行有两个整数m和n,分......
  • C/C++高级语言程序设计课程设计任务书[2022-01-02]
    C/C++高级语言程序设计课程设计任务书[2022-01-02]高级语言程序设计课程设计任务书课程设计名称 中文:高级语言程序设计课程设计英文:ComputerProgrammingBasicCompreh......
  • 213. 字典序最小问题 Best Cow Line(挑战程序设计竞赛)
    地址https://www.papamelon.com/problem/213给定一个字符SS,长度为NN。由SS构成出新的字符串TT,长度也为NN。起初TT是一个空串,然后执行NN次操作,每次操作有两种......
  • 《3D绘图程序设计》彭国伦
    本书分3个部分。第1~10章介绍传统的固定绘图流程和基本3D绘图概念,包括坐标转换、动画与交互、打光、贴图、混合与纹理、动态贴图、StencilBuffer和特效处理等内容。第11~1......
  • 武汉工程大学第五届程序设计新生赛 I题 题解
    (2022,12,3)原题链接(来自牛客竞赛)抽象题意题目有点长,我们需要抽象出一个模型:一个长度为\(n\)的序列\(a_i\),从\(a_1\)开始向后跳,每次可以从\(a_i\)跳到下一位\(a_{i+1}\),......
  • 网络程序设计 实验3 多人聊天室 流式套接字 多线程编程
    实验3多人聊天室实验目的:通过流式套接字编程,及多线程编程,实现简单的多人聊天室。开发语言与工具:VC实验要求:1.使用MFC编程。2.利用流式套接字编程及多线程编程。3......
  • 背包问题
    几种背包问题01背包问题有\(N\)个物品和一个容量是\(V\)的背包。第\(i\)个物品的体积是\(vi\),价值是\(wi\)。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容......
  • 【CF1481F】AB Tree(单调队列优化多重背包)
    容易看出答案下界是树的最大深度,且构造方法只能是每一层的节点都染成同种颜色,可行性的判断是个背包问题。然后发现若不可行,就把除最后一层外的其它层每层都染成同种颜色,然......