湫湫系列故事――减肥记I  HDU 4508

一道裸的完全背包

 #include<iostream>
#include<algorithm>
#include<stdio.h>
#include<string.h>
using namespace std;
int c[],a[],b[];
int main()
{
int n,i,j,m;
while(scanf("%d",&n)!=EOF)
{
for(i=;i<n;i++)
scanf("%d%d",&a[i],&b[i]);
scanf("%d",&m);
memset(c,,sizeof(c));
for(i=;i<n;i++)
for(j=b[i];j<=m;j++)
if(c[j]<c[j-b[i]]+a[i])
c[j]=c[j-b[i]]+a[i];
printf("%d\n",c[m]);
}
return ;
}

下面是没有二进制优化的算法:

思路:

这个问题非常类似于01背包问题,所不同的是每种物品有无限件。也就是从每种物品的角度考虑,与它相关的策略已并非取或不取两种,而是有取0件、取1件、取2件……直至取⌊V/Ci⌋件等许多种。
如果仍然按照解01背包时的思路,令F[i,v]表示前i种物品恰放入一个容量为v的背包的最大权值。仍然可以按照每种物品不同的策略写出状态转移方程,像这样:
F[i,v]=max{F[i−1,v−kCi]+kWi|0≤kCi≤v}
这跟01背包问题一样有O(VN)个状态需要求解,但求解每个状态的时间已经不
是常数了,求解状态F[i,v]的时间是O(vCi),总的复杂度可以认为是O(NVΣVCi),是比较大的。

 #include<iostream>
#include<algorithm>
#include<stdio.h>
#include<string.h>
using namespace std;
int c[],a[],b[];
int main()
{
int n,i,j,k,m;
while(scanf("%d",&n)!=EOF)
{
for(i=;i<n;i++)
scanf("%d%d",&a[i],&b[i]);
scanf("%d",&m);
memset(c,,sizeof(c));
for(i=;i<n;i++)
for(k=0;k<=m/b[i];k++)//数量
for(j=m;j>=k*b[i];j--)
c[j]=max(c[j],c[j-k*b[i]]+k*a[i]);
printf("%d\n",c[m]);
}
return ;
}

最新文章

  1. TreeSet集合深入了解--------攻击原理
  2. 跨域攻击xss
  3. docker加速器
  4. dom 按着shift多选
  5. [COCOS2DX]交叉编译实践+速度优化(vs2012修改win32代码+修改makefile+编译安卓项目包+部署安卓项目包到Eclipse+运行apk)
  6. Dubbo-Admin管理平台和Zookeeper注册中心的搭建(转)
  7. java 执行redis的部分方法
  8. Java Socket:Java-NIO-ServerSocketChannel
  9. HDU 3565 Bi-peak Number(数位DP)题解
  10. Scala基础
  11. spring cloud+.net core搭建微服务架构:Api网关(三)
  12. 51nod1042
  13. mothur reverse.seqs 将序列反向互补
  14. Jdk1.8在CentOS7中的安装与配置
  15. struts2,servlet和springmvc的单例多例问题
  16. PAT甲 1046. Shortest Distance (20) 2016-09-09 23:17 22人阅读 评论(0) 收藏
  17. JavaScript match()方法使用
  18. nginx响应client的处理机制
  19. KEA128单片机启动代码分析
  20. 匈牙利命名法、骆驼命名法、帕斯卡(pascal)命名法 C#命名规范

热门文章

  1. 第一波实习的前端笔记(2)——js.md
  2. ApexSql Log 2014.04.1133破解版&amp;补丁
  3. Android开发者必须掌握的知识技能清单
  4. LR工具使用之结果分析
  5. &quot;Asp.Net Web Api MediaTypeFormatter Error for x-www-formurlencoded data&quot; 解决方法
  6. IE6,IE7上设置body{overflow:hidden;}失效Bug
  7. Javaweb自定义标签
  8. 企业好助手U-Mail邮件服务器软件
  9. eclipse javascript验证报错
  10. js中数组