HDU 1114 Piggy-Bank 完全背包问题、

想想我们01背包是逆序遍历是为了保证什么?

保证每件物品只有两种状态,取或者不取.那么正序遍历呢? 这不就正好满足完全背包的条件了吗

means:给出小猪钱罐的重量和装满钱后的重量,然后是几组数据,每组数据包括每种钱币的价值与重量要求出装满钱罐时的最小价值

 #include<cstdio>
#include<cstring>
#include<cmath>
#include<iostream>
using namespace std;
const int qq=+;
const int MAX=1e8;
int dp[qq];
int v[qq],p[qq];
int main()
{
int t;scanf("%d",&t);
while(t--){
int a,b;scanf("%d%d",&a,&b);
int c=b-a;
int n;scanf("%d",&n);
for(int i=;i<n;++i)
scanf("%d%d",&p[i],&v[i]);
for(int i=;i<=c;++i)
dp[i]=MAX;
dp[]=;
for(int i=;i<n;++i)
for(int j=v[i];j<=c;++j)
dp[j]=min(dp[j],dp[j-v[i]]+p[i]);
if(dp[c]==MAX) printf("This is impossible.\n");
else printf("The minimum amount of money in the piggy-bank is %d.\n",dp[c]);
}
return ;
}

HDU 2191 多重背包问题、

其实还是应用01背包的思想、不过这里有一个小技巧就是二进制表示法、

比如 13、可以表示成 1+2+4+5  这4个数可以组成1到13之间的任意一个数、

那么就可以多重背包拆分成01背包问题、

千万注意将空间压缩成一维的话是逆序遍历、这里解释一下 dp数组中的每一个值都是一种状态,该种状态在当前是独立的不受其他影响的,如果正序遍历的话前面得到的一些状态影响其他状态的生成、

- -、我是这么理解的、  总之你要dp的话就是... 唉本弱弱语文水平好差、

联想一下二维数组下是怎么更新状态的、再看看一维、这样就很容易理解了

 #include<cstdio>
#include<cmath>
#include<cstring>
#include<iostream>
using namespace std;
const int qq=;
int p[qq],v[qq];
int dp[qq];
int main()
{
int t;scanf("%d",&t);
while(t--){
int price,kind;
scanf("%d%d",&price,&kind);
int count=;
int a,b,c;
for(int i=;i<kind;++i){
scanf("%d%d%d",&a,&b,&c);
int t=;
while(c>=t){
p[count]=a*t;
v[count++]=b*t;
c=c-t;
t=t<<;
}
if(c){
p[count]=a*c;
v[count++]=b*c;
}
}
for(int j,i=;i<count;++i)
for(j=price;j>=p[i];--j)
dp[j]=max(dp[j],dp[j-p[i]]+v[i]);
printf("%d\n",dp[price]);
memset(dp,,sizeof(dp)); //一定记得初始化、毕竟有很多组数据、
}
return ;
}

最新文章

  1. ArrayAdapter
  2. 【LeetCode】#344 Reverse String
  3. 谈谈自己对C语言中函数指针的一些理解 (第一次写博客,有点小兴奋哈)
  4. 0429 Scrum团队成立与第6-7章读后感
  5. Storage Systems topics and related papers
  6. ruby类名之间&lt;,&lt;=方法
  7. JavaScript实现在页面上的文本框中输入小写字母自动变为大写字母
  8. 推荐个好东西swoole,php如虎添翼
  9. [视频]MAC中如何单独放大文本字体
  10. ClickOnce证书签名
  11. git笔记之解决eclipse不能提交jar等文件的问题
  12. C++习题 对象数组输入与输出
  13. 通过管道进行线程间通信:字节流。字符流的用法及API类似
  14. [bzoj4881][Lydsy2017年5月月赛]线段游戏
  15. react,react native,webpack,ES6,node.js----------今天上午学了一下node.js
  16. Path Analyzer Pro出现raw socket问题
  17. 2.抽取代码(BaseActivity)
  18. javaMail实现收发邮件(三)
  19. 002 Spark的编译
  20. Netbeans异常之cannet locate java installation in specified jdkhome

热门文章

  1. Ionic.Zip
  2. Hdu 1498 二分匹配
  3. Linux下的MySQL主从同步
  4. IOS开发基础篇--CAShapeLayer的strokeStart和strokeEnd属性
  5. 2018-5-22-SublimeText-粘贴图片保存到本地
  6. Python 匹配IP地址的正则表达式
  7. NOIP模拟 17.8.18
  8. Linux之源码包
  9. CentOS8.0-1905安装配置ftp服务器
  10. WinForm 实现主程序(exe)与其关联类库(*.dll)分开存放