完全背包

完全背包问题和基本的 0-1 背包问题非常类似,区别就是在完全背包问题中,每种物品有无限件。
从每种物品的角度考虑,求解完全背包问题的策略由对某种物品取或者不取变成了取0件、取1件、取2件……等很多种。按基本的01背包问题求解算法的思路,设 f[ i ][ v ] 表示前i种物品恰放入一个载荷能力为 v 的背包的最大价值。则状态转移方程为 f[ i ][ v ] = max{ f[ i - 1 ][ v - k * w[ i ] ] + k * p[ i ] | 0 <= k * p[ i ] <= v }。
核心代码:

for (i=1; i<=n; i++)   //阶段:枚举每个物品for (v=0; v<=M; v++)   //状态:枚举背包载荷能力for (k=1; k<=v div w[i]; k++)  //决策f[i][v]=max(f[i-1][v], f[i-1][v-k*w[i]]+k*p[i])

Dollar Dayz

题意:

农夫John去了在Cow Store的Dollar Days,发现有无限数量的工具在出售。在他第一次去的时候,这些工具以1美元、2美元和3美元的价格出售。农夫John正好有5美元,他可以买每件1美元的工具5个;或者买每件3美元的工具1个,然后买每件2美元的工具1个;等等;如果农夫John把所有的钱花在买工具上,那么就一共有5种不同的组合方式,如下所示:
1 @ US$3 + 1 @ US$2
1 @ US$3 + 2 @ US$1
1 @ US$2 + 3 @ US$1
2 @ US$2 + 1 @ US$1
5 @ US$1
请您编写一个程序,计算农夫John在Cow Store花费N美元(1 <= N <= 1000)可以购买工具的方式数,工具的价格成本从1美元到K美元(1 <= K <= 100)。

输入

输入一行,给出两个用空格分隔的整数:N和K。

输出

输出一行,给出农夫John花费他的钱的方式数。

#include <iostream>
#include <cstdio>
#include <cmath>
#include <cstring>
using namespace std;
#define ll long long
ll inf=1000000000000000000;
ll a[1001];//低位
ll b[1001];//高位
int main()
{int n,k;scanf("%d%d",&n,&k);memset(a,0,sizeof(a));memset(b,0,sizeof(b));a[0]=1;for(int j=1;j<=k;j++)for(int i=j;i<=n;i++){b[i]=(b[i]+b[i-j])+(a[i]+a[i-j])/inf;a[i]=(a[i]+a[i-j])%inf;}if(b[n]) cout<<b[n];cout<<a[n]<<endl;return 0;
}

Dollar Dayz(完全背包 + 高精度)相关推荐

  1. 挑战练习题2.3动态规划 poj3181 Dollar Dayz 完全背包

    题目链接: http://poj.org/problem?id=3181 题意: 农夫约翰有N元钱,市场上有价值1--K的商品无限个,求所有的花钱方案? 题解: http://www.hankcs.c ...

  2. bzoj 1655: [Usaco2006 Jan] Dollar Dayz 奶牛商店(高精度完全背包)

    1655: [Usaco2006 Jan] Dollar Dayz 奶牛商店 Time Limit: 5 Sec  Memory Limit: 64 MB Submit: 599  Solved: 3 ...

  3. Dollar Dayz

    完全背包+高精度 #include<cstdio> #include<cstring> #define ll __int64 ll INF=100000000000000000 ...

  4. H - Dollar Dayz

    Dollar Dayz Farmer John 想知道,在一家商品价格为1至K (1 <= K <= 100)的店有多少方法能正好花完他的N(1 <= N <= 1000)元钱 ...

  5. Dollar Dayz POJ - 3181(动态规划+大数高低位分离输出)

    题意:就是给出二个数N,和k,有1~k种钱币,每种都 是无限个,用这些种类的钱币可以组合成总钱N有多少种方式. 解题:这就是一个完全背包,把N看成容量,钱币的类型值为 花费和价值.与记录有多少种路径的 ...

  6. Dollar Dayz-完全背包+大数处理

    [题目] Farmer John goes to Dollar Days at The Cow Store and discovers an unlimited number of tools on ...

  7. Dollar Dayz poj3181

    http://poj.org/problem?id=3181 这个题目一开始就能看出来是个dp问题,但是我并没有一开始就看出来是一个完全背包为题,只是想着根据以前的方法,这个问题应该是可以找到规律的, ...

  8. Dollar Dayz POJ - 3181

    解法 完全背包+大数...不想写大数了放个python得了 代码 dp=[0 for i in range(2000)] n,k=map(int,input().split()) num=[i for ...

  9. POJ 3181 Dollar Dayz DP

    f[i][j]=f[i-j][j]+f[i][j-1],结果很大需要高精度. //#pragma comment(linker, "/STACK:1024000000,1024000000& ...

最新文章

  1. 第六周项目一-分数类的雏形(1)
  2. python代码块所属关系的语法-天元高校邦数据科学通识课【Python基础语法】答案...
  3. Visual Studio 2013 error MS8020 Build tools v140 cannot be found 解决系统 不同部分软件 所依赖编译器版本不同的矛盾
  4. mysql-防止XSS攻击
  5. java objective-c,Objective-C基础教程学习笔记(附录)从Java转向Objective-C
  6. Android UI布局优化之ViewStub
  7. Java JDK下载与安装教程
  8. python can通信_Python中的高级/抽象Canbus接口
  9. 联想启天M5710不开机,开机后卡logo
  10. 可以作用c语言常量的是,正确的C语言常量是什么?
  11. rgb的原理以及应用简介
  12. Struts2项目实战 微云盘(七):文件上传下载
  13. 看看什么叫穿越失败,我承认我确实笑了
  14. SpringBoot整合Shiro搭建登录注册认证授权权限项目模板
  15. Linux上的服务器无法调用新浪邮箱发送邮件
  16. 3999 元起,小米 13 正式发布:骁龙 8 Gen 2、IP68、超窄边框直屏、徕卡三摄
  17. 农产品进出口成都代办公司注册流程
  18. 2018-9-25实验二
  19. 玩转Redis-干掉钉子户-没有设置过期时间的key
  20. 集赞转发送大礼 有赞你就来

热门文章

  1. 如何进行在线教育系统软件平台开发?开发成本有多少
  2. Uniapp 接入微信H5登录,并获取openid和unionid 含Sql、PHP完整代码
  3. MTK6765编译环境搭建
  4. C链表:“数形结合”让调试更快纠错
  5. Coroutine的浅析和简单实现
  6. ps命令的使用(linux)
  7. 铁路旁的一条平行小路上一行人与一骑车人同时向东行进,行人速度为3.6千米/时,骑车人的速度为10.8千米/时,如果有一列火车从他们背后开过来,它通过行人用了22秒,通过骑车人用了26秒,问这列火车
  8. 在Linux桌面条件下打开Terminal的快捷键
  9. 使用Xstream_iterator进行文件复制
  10. Bash漏洞分析溯源 cgi文件 (CVE-2014-6271) --墨者学院