POJ_3181_Dollar_Dayz_(动态规划,完全部分和,完全背包)
描述
http://poj.org/problem?id=3181
FJ有n元钱,有k种商品,各为1,2,...,k-1,k元,问有多少种花掉这n元钱的方法.
Time Limit: 1000MS | Memory Limit: 65536K | |
Total Submissions: 5858 | Accepted: 2197 |
Description
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
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).
Input
Output
Sample Input
5 3
Sample Output
5
Source
分析
这是一个完全部分和问题.对于多重部分和问题,可以用多重背包,但是由于有三层循环,会超时(即便使用二进制优化),所以有特殊的算法.而完全部分和问题可以直接用完全背包做.
注意:
1.是大数,要用高精度,或者两位分别存高低位:
unsigned long long 上限是1.8e19,所以每一位存1e17.
2.注意如果高位有数,低位要保证有前导0.
#include <cstdio>
#include <algorithm>
#define ull unsigned long long
const int maxw=,maxn=;
const ull mod=;
int W,N;
ull dp[maxw][]; void solve()
{
dp[][]=;
for(int i=;i<=N;i++)
{
for(int j=i;j<=W;j++)
{
dp[j][]+=dp[j-i][];
dp[j][]+=dp[j-i][];
dp[j][]+=dp[j][]/mod;
dp[j][]%=mod;
}
}
if(dp[W][])
{
printf("%llu",dp[W][]);
printf("%017llu\n",dp[W][]);
}
else
{
printf("%llu\n",dp[W][]);
}
} int main()
{
#ifndef ONLINE_JUDGE
freopen("john.in","r",stdin);
freopen("john.out","w",stdout);
#endif
scanf("%d%d",&W,&N);
solve();
#ifndef ONLINE_JUDGE
fclose(stdin);
fclose(stdout);
system("john.out");
#endif
return ;
}
POJ_3181_Dollar_Dayz_(动态规划,完全部分和,完全背包)的更多相关文章
- 两个简单的动态规划问题,0-1背包和最大不相邻数累加和,附递归c代码
最近面试经常被问到动态规划,所以自己做了一个总结,希望能进行深入的理解然后尝试能不能找到通用的解决手段.我觉得动态规划思想好理解,难的是怎么找出全部并且合理的子问题和出口. 我一般把问题分为两类,一类 ...
- 动态规划:部分和问题和数字和为sum的方法数
很久之前看过这个题目,但是没有仔细整理,直到现在看基础才想到这两个题.这两个题非常经典也非常类似.接下来分别介绍. 部分和问题 题目描述 给定整数a1.a2........an,判断是否可以从中选出若 ...
- POJ_1742_Coins_(动态规划,多重部分和)
描述 http://poj.org/problem?id=1742 n种不同面额的硬币 ai ,每种各 mi 个,判断可以从这些数字值中选出若干使它们组成的面额恰好为 k 的 k 的个数. 原型: n ...
- 0-1背包的动态规划算法,部分背包的贪心算法和DP算法------算法导论
一.问题描述 0-1背包问题,部分背包问题.分别实现0-1背包的DP算法,部分背包的贪心算法和DP算法. 二.算法原理 (1)0-1背包的DP算法 0-1背包问题:有n件物品和一个容量为W的背包.第i ...
- P1759 通天之潜水(不详细,勿看)(动态规划递推,组合背包,洛谷)
题目链接:点击进入 题目分析: 简单的组合背包模板题,但是递推的同时要刷新这种情况使用了哪些物品 ac代码: #include<bits/stdc++.h> using namespace ...
- NOIP 2006 金明的预算方案(洛谷P1064,动态规划递推,01背包变形,滚动数组)
一.题目链接:P1064 金明的预算方案 二.思路 1.一共只有五种情况 @1.不买 @2.只买主件 @3.买主件和附件1(如果不存在附件也要运算,只是这时附件的数据是0,也就是算了对标准的结果也没影 ...
- P1616 疯狂的采药(洛谷,动态规划递推,完全背包)
先上题目链接:P1616 疯狂的采药 然后放AC代码: #include<bits/stdc++.h> #define ll long long using namespace std; ...
- P1060 开心的金明(洛谷,动态规划递推,01背包轻微变形题)
题目链接:P1060 开心的金明 基本思路: 基本上和01背包原题一样,不同点在于这里要的是最大重要度*价格总和,我们之前原题是 f[j]=max(f[j],f[j-v[i]]+p[i]); 那么这里 ...
- P1048 采药(洛谷,动态规划递推,01背包原题)
题目直接放链接 P1048 采药 这题只是01背包+背景故事而已 原题来的 PS:我写了一篇很详细的01背包说明,如果下面ac代码有看不懂的地方可以去看看 对01背包的分析与理解(图文) 下面上ac代 ...
随机推荐
- 推荐几本C#程序员阅读的书籍
http://www.cnblogs.com/tongming/p/3879752.html
- 项目由Windows2003 迁移到Windows 2008 过程,报 JS错误
这两天在做服务器迁移,遇到了一些小的问题,现在做个粗略的记录 原服务器环境:Windows 2003 现服务器环境:Windows 2008 其中SSB项目在迁移部署后发现,报 JS的错误. 我在想除 ...
- 写漂亮C#代码的小技巧
第一次写博客,不知道代码用什么编辑,直接截图了,哈哈哈.... 我自己不喜欢看随便复制粘贴过来一堆代码的博客,所以,用些简单点的例子吧,希望对大家有帮助... ------------------- ...
- 配置nginx的负载均衡
1.1 什么是负载均衡 负载均衡 建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽.增加吞吐量.加强网络数据处理能力.提高网络的灵活性和可用性. 负载均衡,英文名称 ...
- 2014年12月20日00:33:14-遮罩+进度条-extjs form.isvalid
1.Extjs : 遮罩+进度条 2.Extjs: extjs form.isvalid http://stackoverflow.com/questions/19354433/extjs-form- ...
- 滑动条 Trackbar[OpenCV 笔记9]
OpenCV中没有实现按钮的功能,我们可以利用滑动条来实现按钮功能. , ); trackbarname 轨迹条的名字. winname 窗口的名字,轨迹条会依附在这个窗口上. value 一个指向整 ...
- Graphviz使用简介(中文乱码的问题)
Graphviz使用简介 graphviz是基于dot语言的绘图工具,可以画有向图.无向图.关系图.目录图.流程图等.具体作用可见它的官方网站 一些参考的网址: http://www.open-ope ...
- HTML实体
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...
- which命令
which指令会在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果. 格式 which 可执行文件名称 参数 -V 显示版本信息 实例 用 which 去找出 which w ...
- Uploadify 上传失败
更改Apache的php.ini的配置 In my php.ini (created custom ini file in public_html) would this solve this pro ...