题面

Description

N 种物品,第 i 种物品有 s i 个,单个重量为 w i ,单个价值为 v i 。现有一个限重为 W 的背包,求能容 纳的物品的最大总价值。

Input

输入第一行二个整数 N , W ( N ≤ 1000 , M ≤ 10000) 。
接下来 N 行,每行三个整数 s i,w i,v i ,描述一种物品。

Output

输出一行一个整数,描述能容纳的物品的最大总价值。保证答案不会超过 231−1231−1 。

Sample Input

5 1000
4 20 80
9 50 40
7 50 30
6 30 40
1 20 20

Sample Output

1090

题解

多重背包的裸题
如果直接把每个物品拆成多个'1'的话会超时
需要用到二进制优化,
然后就转化成了01背包。

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
const int MAX=1050;
int w[MAX*1000];//重量
int v[MAX*1000];//价值
int f[MAX*1000];
int N,M,W,V,S,cnt=0;
inline int read()
{register int x=0,t=1;register char ch=getchar();while((ch<'0'||ch>'9')&&ch!='-')ch=getchar();if(ch=='-'){t=-1;ch=getchar();}while(ch<='9'&&ch>='0'){x=x*10+ch-48;ch=getchar();}return x*t;
}
int main()
{N=read();M=read();for(int i=1;i<=N;++i){S=read();W=read();V=read();for(int j=1;j<S;j<<=1)//多重背包二进制分解 {v[++cnt]=V*j;w[cnt]=W*j;S-=j;}v[++cnt]=S*V;w[cnt]=S*W;}N=cnt;//二进制分解之后转换为01背包//f[i]表示背包装了重量为i时的最大价值//f[i]=max{f[i-W[j]]+v[j]} //利用滚动数组节约内存 for(int i=1;i<=N;++i){for(int j=M;j>=w[i];--j)f[j]=max(f[j],f[j-w[i]]+v[i]);}printf("%d\n",f[M]);return 0;
}

转载于:https://www.cnblogs.com/cjyyb/p/7202481.html

P2500 - 【DP合集】背包 bound相关推荐

  1. CJOJ 【DP合集】最长上升序列2 — LIS2

    题面 已知一个 1 ∼ N 的排列的最长上升子序列长度为 K ,求合法的排列个数. 好题(除了我想不出来我应该找不到缺点), 想一想最长上升子序列的二分做法, 接在序列后面或者替换. 所以对于每一个位 ...

  2. BZOJ 2133 切割(树形DP,树上背包)大概是本题全网第一篇题解 >_<【BZOJ 修复工程】

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 BZOJ 2133 切割这道题全网搜不到任何一篇题解 >_< 看评测记录也没有几个人AC- ...

  3. 算法竞赛知识合集 目录(博客中转站)

    目录 0x00. 基本算法 0x01. 基本算法 - 位运算 0x02. 基本算法 - 递推与递归 0x03. 基本算法 - 前缀和与差分 0x04.基本算法 - 二分和三分 0x05.基本算法 - ...

  4. Jerry的ABAP原创技术文章合集

    我之前发过三篇和ABAP相关的文章: 1. Jerry的ABAP, Java和JavaScript乱炖 这篇文章包含我多年来在SAP成都研究院使用ABAP, Java和JavaScript工作过程中的 ...

  5. 计算机视觉与模式识别代码合集第二版three

    计算机视觉与模式识别代码合集第二版three     Topic Name Reference code Optical Flow Horn and Schunck's Optical Flow   ...

  6. android 自定义图片合集(自定义控件)

    留守公司就剩下几个人了.我没有年假故还在坚守.废话不多说,闲来无事.想练习一下自定义控件的应用以及学习图片类操作以及处理等等.所以我在网上找了大神文章,鸿洋大神的博客.找到了自定义控件以及实战图片圆角 ...

  7. 算法基础课【合集1】

    文章目录 基础算法 785. 快速排序 786. 第k个数 787. 归并排序 788. 逆序对的数量 789. 数的范围 790. 数的三次方根 791. 高精度加法 792. 高精度减法 793. ...

  8. CMD命令行高级教程精选合编合集 转

    CMD命令行高级教程精选合编合集 PKjason 发布于 2013/04/14 18:24 CMD命令行高级教程精选合编,需要的朋友可以参考下. 目录 第一章 批处理基础 第一节 常用批处理内部命令简 ...

  9. SDU CS 期末考回忆版合集

    SDU CS 期末考回忆版合集 删除原有分散的版本,合订起来画个. 包括:机器学习.算法.图形学.操作系统.编译原理.软件工程.大数据分析管理.计算机体系结构等 2021 SDU机器学习期末考试 20 ...

最新文章

  1. windows禁用/启用hyper-V,解决hyper-V与模拟器同时启用时造成冲突
  2. 用户模式 VS 内核模式(1)
  3. 正整数分解为几个连续自然数之和
  4. MapReduce多用户任务调度器——容量调度器(Capacity Scheduler)原理和源码研究
  5. MySQL数据库修改密码忘记密码
  6. OpenGL+VS2013环境配置
  7. 2018蓝桥C++B:煤球数目;生日蜡烛(枚举年龄和枚举次数)
  8. java堆排序工具包_JAVA 排序工具类
  9. c51流水灯实验报告汇编语言,LED流水灯显示实验,单片机实验报告
  10. 基于PLC远程监控,PLC远程运维,PLC远程调试的系统软件开发方案
  11. matlab 普通数值计算,数值计算方法(MATLAB版)
  12. python正则表达式代码_python正则表达式实例代码
  13. 生活中的十大心理学现象
  14. 永中office linux卸载,ubuntu下完全彻底删除永中office的方法
  15. JS端计算一段时间内工作日的天数,排除周末和法定节假日,同时考虑到调休日
  16. [转] iOS 开发者应该知道的 ARM 结构(转自apple4us)
  17. 令人心酸的100个微瞬间 不信你不会被触动 别落泪哦
  18. (黑龙江) --2011年度注册测绘师资格考试合格人员名单
  19. 转【@入口@】伏草惟存,文章精选系列导航
  20. Kubernetes、C语言小白变怪兽、C++ Primer Plus、TCP/IP网络编程、JavaScript高级程序设计

热门文章

  1. 一线互联网公司都怎么发年终奖,你知道吗?
  2. 怎么在PDF上编辑文字?其实编辑方法很简单
  3. [转]做交互应该知道的视觉几件事
  4. python excel 图表 matplotlib_Python数据可视化:matplotlib 常见图表绘制——直方图
  5. Stay Hungry, Stay Foolish !!
  6. 永磁同步电机偏差解耦与电流前馈解耦控制比较
  7. git diff比较不同commit版本的代码文件异同
  8. 店宝宝:消费升级时代之“干饭人”的新玩法
  9. 10个非常有趣的Python库,可以玩上一整天
  10. python实时监控滚动日志,推送企业微信消息