AcWing09. 分组背包问题
有\(N\)组物品和一个容量是\(V\)的背包。
每组物品有若干个,同一组内的物品最多只能选一个。
每件物品的体积是\(v_{ij}\),价值是\(w_{ij}\),其中\(i\)是组号,\(j\)是组内编号。
求解将哪些物品装入背包,可使物品总体积不超过背包容量,且总价值最大。
输出最大价值。
输入格式
第一行有两个整数\(N\),\(V\),用空格隔开,分别表示物品组数和背包容量。
接下来有\(N\)组数据:
每组数据第一行有一个整数\(S_i\),表示第\(i\)个物品组的物品数量;
每组数据接下来有\(S_i\)行,每行有两个整数\(v_{ij}\),\(w_{ij}\),用空格隔开,分别表示第\(i\)个物品组的第\(j\)个物品的体积和价值;
输出格式
输出一个整数,表示最大价值。
数据范围
\(0<N,V≤100\)
\(0<S_i≤100\)
\(0<v_{ij},w_{ij}≤100\)
输入样例
3 5
2
1 2
2 4
1
3 4
1
4 5
输出样例:
8
思路:

按照如上图所示的方式、对该集合进行集合划分、不难得出、不选\(i\)的状态表示为\(f[i - 1, j]\)、选\(i\)的状态表示为\(f[i - 1, j - v[i , k]] + w[i , k]\),分析过程在我之前的01背包有过类似的
分析、此处不再赘述。指路链接
代码:
#include <iostream>
#include <algorithm>
using namespace std;
const int N = 110;
int f[N][N], v[N][N], w[N][N];
int s[N];
int main()
{
int n, m;
cin >> n >> m;
// input
for(int i = 1 ; i <= n ; i ++ )
{
cin >> s[i];
for(int j = 0 ; j < s[i] ; j ++ )
cin >> v[i][j] >> w[i][j];
}
for(int i = 1 ; i <= n ; i ++ )
{
for(int j = 0 ; j <= m ; j ++ )
{
// 不选的情况
f[i][j] = f[i - 1][j];
// 选的情况
for(int k = 0 ; k < s[i] ; k ++ ){
// 大于的时候才是这个状态
if( j >= v[i][k])
{
f[i][j] = max(f[i][j], f[i - 1][j - v[i][k]] + w[i][k]);
}
}
}
}
// output
cout << f[n][m] << endl;
return 0;
}
AcWing09. 分组背包问题的更多相关文章
- 动态规划:HDU1712-ACboy needs your help(分组背包问题)
ACboy needs your help Time Limit : 1000/1000ms (Java/Other) Memory Limit : 32768/32768K (Java/Othe ...
- ACboy needs your help hdu 分组背包问题
Description ACboy has N courses this term, and he plans to spend at most M days on study.Of course,t ...
- AcWing 9. 分组背包问题
#include <iostream> #include <algorithm> using namespace std; ; int n, m; int v[N][N], w ...
- HDU 3033 分组背包变形(每种至少一个)
I love sneakers! Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- 分组背包——sicily 1750
1750. 运动会 限制条件 时间限制: 1 秒, 内存限制: 32 兆 题目描述 ZEH是一名04级的学生,他除了绩点高,还有运动细胞.有一次学院举办运动会,ZEH发现里面的 项目都是他所向披靡的, ...
- [CF148E] Porcelain (分组背包)
题目链接:http://codeforces.com/problemset/problem/148/E 题目大意:有n组数据,每次可以从任意一组的两端取出1个数,问你取m个数最大能组成多少? 思路:先 ...
- HDU 1712 ACboy needs your help 典型的分组背包
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1712 ACboy needs your help Time Limit: 1000/1000 MS ( ...
- hdu1712(分组背包)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1712 分析: 典型的分组背包问题,如果不会的可以看一下背包九讲. 看下背包九讲中的描述: for 所有 ...
- HDU - 1712 - ACboy needs your help 【分组背包】
<题目链接> 题目大意:有n个课程,现在花M天来学习这些课程,学习每个课程花的天数所得到的价值不同,求M天怎么分配学习才能得到的价值最大.(这些课程得到的价值和所花天数的关系由矩阵给出) ...
随机推荐
- IntelliJ IDEA 2021.3 正式发布:支持远程开发、IDE故障排查等多项优化改进
作者:程序猿DD 博客:https://blog.didispace.com/ 昨天刚刚跟大家聊了Jetbrains即将推出轻量级编辑器Fleet,以挑战 VS Code的消息,今天又收到了Intel ...
- CF1610F F. Mashtali: a Space Oddysey
我们首先发现有如下性质: 我们不妨先随机定向边,那么我们发现无论我们如何翻转边. 都会对其两端的点,造成 \(2 / 4\) 的影响,所以我们发现如果一个点其和他相连的所有边权和为偶数,则我们不能调整 ...
- 【机器学习与R语言】3-概率学习朴素贝叶斯(NB)
目录 1.理解朴素贝叶斯 1)基本概念 2)朴素贝叶斯算法 2.朴素贝斯分类应用 1)收集数据 2)探索和准备数据 3)训练模型 4)评估模型性能 5)提升模型性能 1.理解朴素贝叶斯 1)基本概念 ...
- 巩固java第七天
巩固内容: HTML 属性 属性是 HTML 元素提供的附加信息. HTML 属性 HTML 元素可以设置属性 属性可以在元素中添加附加信息 属性一般描述于开始标签 属性总是以名称/值对的形式出现,比 ...
- ComponentScan注解的使用
在项目初始化时,会将加@component,@service...相关注解的类添加到spring容器中. 但是项目需要,项目初始化时自动过滤某包下面的类,不将其添加到容器中. 有两种实现方案, 1.如 ...
- 如果你不想让pthread_join阻塞你的进程,那么请调用pthread_detach
如果你不想让pthread_join阻塞你的进程,那么请调用pthread_detach 2016年01月13日 16:04:20 炸鸡叔 阅读数:7277 转发自:http://baike.ba ...
- Private Destructor
Predict the output of following programs. 1 #include <iostream> 2 using namespace std; 3 4 cla ...
- "delete this" in C++
Ideally delete operator should not be used for this pointer. However, if used, then following points ...
- 手写Starter
一. Starter工程的命名 Spring 官方定义的Starter通常命名遵循的格式为spring-boot-starter-{name},例如 spring-boot-starter-web.S ...
- 【Services】【Web】【tomcat】配置tomcat支持https传输
1. 基础: 1.1. 描述:内网的tomcat接到外网nginx转发过来的请求之后需要和外网的客户端进行通讯,为了保证通讯内容的安装,使用tomcat使用https协议. 1.2. 链接:http: ...