【题目】

Farmer John goes to Dollar Days at The Cow Store and discovers an unlimited number of tools on sale. During his first visit, the tools are selling variously for $1, $2, and $3. Farmer John has exactly $5 to spend. He can buy 5 tools at $1 each or 1 tool at $3 and an additional 1 tool at $2. Of course, there are other combinations for a total of 5 different ways FJ can spend all his money on tools. Here they are:

        1 @ US$3 + 1 @ US$21 @ US$3 + 2 @ US$11 @ US$2 + 3 @ US$12 @ US$2 + 1 @ US$15 @ US$1

Write a program than will compute the number of ways FJ can spend N dollars (1 <= N <= 1000) at The Cow Store for tools on sale with a cost of $1..$K (1 <= K <= 100).

【输入】

A single line with two space-separated integers: N and K.

【输出】

A single line with a single integer that is the number of unique ways FJ can spend his money.

【样例】

输入:

5 3

输出:

5

题目大意:给出两个数n和m,问在m以内的整数组成n的有多少种方法。

思路:

完全背包,但到后面的数会很大,参考学习别人的代码后,用将大数分开处理的方法AC了

假设F(N,M) 整数 N 的划分个数,其中 M 表示将 N 拆分后的序列中最大数

考虑边界状态:
M = 1 或者 N = 1 只有一个划分 既: F(1,1) = 1
M = N : 等于把M - 1 的划分数加 1 既: F(N,N) = F(N,N-1) + 1 
M > N: 按理说,N 划分后的序列中最大数是不会超过 N 的,所以 F(N,M ) = F(N,N)
M < N: 这个是最常见的, 他应该是序列中最大数为 M-1 的划分和 N-M 的划分之和。

用动态规划来表示

dp[n][m]= dp[n][m-1]+ dp[n-m][m]
           
           dp[n][m]表示整数 n 的划分中,每个数不大于 m 的划分数。
           则划分数可以分为两种情况:
 
           a. 划分中每个数都小于 m, 相当于每个数不大于 m- 1, 故
              划分数为 dp[n][m-1].
 
           b. 划分中有一个数为 m. 那就在 n中减去 m , 剩下的就相当
              于把 n-m 进行划分, 故划分数为 dp[n-m][m];

代码:

#include<iostream>
#include<cstring>
#include<cstdio>
#include <algorithm>
using namespace std;
__int64 a[1005][105],b[1005][105],inf=1;int main()
{int n,m,k,i,j;for(int i=0;i<18;i++)inf*=10;while(cin>>n>>m&&(n&&m)){memset(a,0,sizeof(a));memset(b,0,sizeof(b));for(i=0;i<=m;i++)a[0][i]=1;for(j=1;j<=m;j++){for(i=1;i<=n;i++){if(i<j){a[i][j]=a[i][j-1];b[i][j]=b[i][j-1];continue;}b[i][j] = b[i-j][j]+b[i][j-1]+(a[i-j][j]+a[i][j-1])/inf;a[i][j] = (a[i-j][j]+a[i][j-1])%inf;}}if(b[n][m])printf("%I64d",b[n][m]);printf("%I64d\n",a[n][m]);}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(完全背包 + 高精度)

    完全背包 完全背包问题和基本的 0-1 背包问题非常类似,区别就是在完全背包问题中,每种物品有无限件. 从每种物品的角度考虑,求解完全背包问题的策略由对某种物品取或者不取变成了取0件.取1件.取2件- ...

  4. H - Dollar Dayz

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

  5. Dollar Dayz POJ - 3181

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

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

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

  7. Dollar Dayz poj3181

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

  8. Dollar Dayz

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

  9. POJ 3181 Dollar Dayz DP

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

最新文章

  1. 大尺寸3D打印机:不再是“围城”!工业级3D打印的瞬发时代已来!
  2. 第十六届全国大学生智能车参赛与防疫承诺书
  3. F5 bigip.conf配置问题
  4. Struts2的OGNL
  5. CSS中的特殊的选择器
  6. 中单引号怎么转义_在JavaScript中组合字符串的4种方法
  7. ArrayList源码解析(基于Java8)
  8. 三思笔记,涂抹ORACLE
  9. Fiddler 抓包工具总结
  10. Xshell6与Xftp6下载
  11. 晶体管放大电路与Multisim仿真学习笔记
  12. php 小米路由器_小米路由器固件修改
  13. 【CAD arx二次开发】CAD2020 通过Wizard向导新建arx项目
  14. 一个app项目如何从想法一步一步落地?有哪些必要的流程?
  15. Excel 填充间格空白单元格与最上临近非空单元格值相同
  16. 通过精读一本英文技术书籍搞定英语
  17. 操作系统学习笔记(二十二)~虚拟存储技术+请求分页+页面置换
  18. 运维大佬嘲笑我,这个你都不知道?
  19. r语言结构方程模型可视化_模型一个结构方程模型(SEM)的简单实验
  20. 双花是什么花?区块链技术如何避免支付中的双花问题?

热门文章

  1. ModaHub魔搭社区:基于阿里云 ACK 搭建开源向量数据库 Milvus
  2. 基于Python的汽车销售系统的设计和实现
  3. luogu 1909
  4. volumio怎么连接屏幕_树莓派CD转盘volumio+NAS+DLNA+迅雷下载机+LCD小显示屏制作
  5. 关于excel表格的公式大全
  6. ar模型功率谱估计 matlab,AR模型功率谱估计及Matlab实现
  7. 记DMA冲突引发的血案
  8. Pyinstaller 打包程序踩过的坑(1.Failed to execute script ;2.No module named typedefs等问题)
  9. php中scrolling,如何设置浮动框架是否显示滚动条scrolling?
  10. 【ABAP】生产订单收货增强控制