hyxzc_背包九讲课件
f[i][j]=f[i-1][j],
综上所述,f[i][j]=max(f[i-1][j],f[i-1][j-v[i]]+c[i]);
j=m;j>0;j--)//思考,为什么是倒叙循环?
(j>=v[i]) f[i][j]=max(f[i-1][j],f[i-1][j-v[i]]+c[i]);
else f[i][j]=f[i-1][j];
② 用一维优化。//观察动态规划方程,我们不难发现,f[i][j]只与上一层有关。
f[j]=max(f[j];f[j-v[i]]+c[i]);
ci==4
f[4]==4; f[8]==f[4]+4;
对于一个物品,不止选一次。
j=1;j<=m;j++)//思考,为什么是倒叙循环?
(j>=v[i]) f[i][j]=max(f[i-1][j],f[i-1][j-v[i]]+c[i]);
else f[i][j]=f[i-1][j];
i=1;i<=n;i++)
for (int j=1;j<=m;j++)
f[j]=max(f[j],f[j-v[i]]+c[i]);
(int i=1;i<=n;i++)
{
scanf("%d%d%d",&v,&c,&k);
for (int j=1;j<=k;j++)
s[++cnt].v=v,s[cnt].c=c;
}
这样对于每一个自然数i都可以被组合出来。然后再采用01背包。
while (n--)
//接下来输入n中这个物品
{
scanf("%d%d%d", &vi, &ci, &ki);
//输入每种物品的数目和价值
for (int k=1; k<=ki; k<<=1)
//<<右移 相当于乘二
{
value[cnt]=k*vi;//体积
size[cnt++]=k*ci;//价值
ki-=k;
}
if
(ki>0)
{
value[cnt]=ki*vi;
size[cnt++]=ki*ci;
}
}
//对于i的物品,体积为vi,价值为ci,属于第ki个分组,对于每一个分组而言,最多选一件。
j=M->0
for
i=1->s[k]//当前分组中的所有元素
f[j]=max(f[j],f[j-v[i]]+v[i]);
i=1->s[k] 之外,这样才能保证每一个分组最多只会选1个物品。
read(m,n);
j:=0;
i:=1 to n do
begin
read(x1,y1,z1);
if z1=0 then begin inc(j);
inc(s[j,0].x); s[j,s[j,0].x].x:=x1; s[j,s[j,0].x].y:=x1*y1;
s[j,0].y:=i; end
else
begin
for k:=1 to j do
if
z1=s[k,0].y then
begin
z:=s[k,0].x;
for l:=1 to z do
begin
inc(s[k,0].x);
s[k,s[k,0].x].x:=s[k,l].x+x1;
s[k,s[k,0].x].y:=s[k,l].y+x1*y1;
end;
end;
end;
end;
s[0,0].x:=j;
多米诺骨牌
多米诺骨牌有上下2个方块组成,每个方块中有1~6个点。现有排成行的
f[i][j]//表示前i个骨牌,点数相差j的翻动次数。
for j=-5000->5000
f[i][j]=min(f[i][j],min(f[i-1][j-a[i]],f[i-1][j+a[i]]+1));
hyxzc_背包九讲课件的更多相关文章
- 【DP_背包专题】 背包九讲
这段时间看了<背包九讲>,在HUST VJUDGE上找到了一个题单,挑选了其中16道题集中做了下,选题全部是HDU上的题,大多是简单题.目前做了点小总结,大概提了下每道题的思路重点部分,希 ...
- 背包九讲PDF
本资料仅限个人学习交流使用,不得用于商业用途. 背包九讲PDF:https://pan.baidu.com/s/17rTxMwCo9iSTOW77yucdXQ 提取码:xbqa
- My背包九讲——概述
文章目录 什么是背包问题 背包问题的分类 [第一讲 01背包问题](https://blog.csdn.net/qq_34261446/article/details/103705068) 第二讲 完 ...
- 背包九讲 && 题目
★.背包求方案数的时候,多重背包是不行的,因为产生重复的背包会有多种情况. ★.背包记录路径的时候,其实是不行的,因为更新了12的最优解,如果它依赖于6这个背包,然后你后面改变了6这个背包,就GG 1 ...
- dd大牛的《背包九讲》
P01: 01背包问题 题目 有N件物品和一个容量为V的背包.第i件物品的费用是c[i],价值是w[i].求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大. 基本思路 这是最 ...
- 直接抱过来dd大牛的《背包九讲》来做笔记
P01: 01背包问题 题目 有N件物品和一个容量为V的背包.第i件物品的费用是c[i],价值是w[i].求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大. 基本思路 这是最 ...
- 摘自 dd大牛的《背包九讲》
P01: 01背包问题 题目 有N件物品和一个容量为V的背包.第i件物品的费用是c[i],价值是w[i].求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大. 基本思路 这是最 ...
- 背包九讲(Orz)
P01: 01背包问题 题目 有\(N\)件物品和一个容量为\(V\)的背包.第\(i\)件物品的费用是\(c[i]\),价值是\(w[i]\).求解将哪些物品装入背包可使这些物品的费用总和不超过背包 ...
- dd 在度娘上看到的一个大牛的《背包九讲》 (:
P01: 01背包问题 题目 有N件物品和一个容量为V的背包.第i件物品的费用是c[i],价值是w[i].求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大. 基本思路 这是最 ...
随机推荐
- 设置eclipse控制台上的信息输入到某个文件
转摘自:http://binary.duapp.com/2013/09/1511.html Run->Run Configurations->Common->File
- PHP文件操作函数二
PHP部分文件访问函数总结: 1.filetype("文件路径") //可以输出相关文件类型,返回之为:dir/file... 2.stat("文件名") / ...
- 【Foreign】染色 [LCT][线段树]
染色 Time Limit: 20 Sec Memory Limit: 256 MB Description Input Output Sample Input 13 0 1 0 2 1 11 1 ...
- django中管理程序1
为了解决启动关闭程序方便,在django中启动结束任务的问题. urls.py ################DJANGO start kill job####################### ...
- ubuntu安装mysqlclient
安装mysql: sudo apt-get install mysql-server mysql-client 然后mysql -V查看mysql是否安装成功 sudo apt-get install ...
- Symfony2之创建一个简单的web应用 Symfony2——创建bundle
bundle就像插件或者一个功能齐全的应用,我们在应用层上开发的应用的所有代码,包括:PHP文件.配置文件.图片.css文件.js文件等都会包含在bunde系统中. 可以通过两种方法 ...
- Linux-进程间通信(一): 管道
1. 管道局限性: (1) 半双工:(若模拟全双工,可以使用两个管道,即,proc1-->proc2一条管道,proc2-->proc1一条管道) (2) 只能在具有公共祖先的进程之间使用 ...
- docker常用命令,安装常用实例,一步式安装mysql
刚来公司,跟公司测试环境项目的服务器,环境是linux Centos7.2 所有的tomcat都挂载在docker容器下,所以也就学习了一些简单的docker指令(学习之前请了解什么是docker, ...
- Ubunt 服务教程集锦
1.Ubuntu管理服务安装(强烈推荐最好用Xshell和Xftp): 序号 服务名 介绍 教程地址 windows客户端 1 VNC 可以图形界面管理Ubuntu ubuntu安装vncserver ...
- html实现点击章节自动调到开头
#转载请联系 原理是用id的值结合a链接实现锚点效果.比较简单,直接放一段代码好了. <!DOCTYPE html> <html lang="en"> &l ...