Dollar Dayz poj3181
http://poj.org/problem?id=3181
这个题目一开始就能看出来是个dp问题,但是我并没有一开始就看出来是一个完全背包为题,只是想着根据以前的方法,这个问题应该是可以找到规律的,但是,还是被坑了,这还是一个大数问题!
首先我膜拜一下hankcs大神的:
///
- #include <iostream>
- using namespace std;
- unsigned long long dp[100 + 16][1000 + 16]; // dp[i][j] := 用i种价格配出金额j的方案数
- ///SubMain//
- int main(int argc, char *argv[])
- {
- #ifndef ONLINE_JUDGE
- freopen("in.txt", "r", stdin);
- freopen("out.txt", "w", stdout);
- #endif
- int N, K;
- cin >> N >> K;
- dp[0][0] = 1;
- for (int i = 1; i <= K; ++i)
- {
- for (int k = 0; k <= N; k += i)
- {
- for (int j = N; j >= k; --j)
- {
- dp[i][j] += dp[i - 1][j - k];
- }
- }
- }
- cout << dp[K][N] << endl;
- #ifndef ONLINE_JUDGE
- fclose(stdin);
- fclose(stdout);
- system("out.txt");
- #endif
- return 0;
- }
hancks的这个做法是用完全背包
dp[i][j] = dp[i – 1][j] + dp[i – 1][j – i] + dp[i – 1][j – 2 * i] + … + dp[i – 1][0]
由这个公式可以再递推:
将j换成j – i有
dp[i][j – i] = dp[i – 1][j – i] + dp[i – 1][j – 2 * i] + … + dp[i – 1][0]
得出:if j >= i:
dp[i][j] = dp[i-1][j] + dp[i][j-i];
我的做法是一开始就推出了这个公式,因为不小心看出了这个规律
i:1->4 ,j :1->5 dp[i][j]规律是这样的
1 1 1 1 1
1 2 2 3 3
1 2 3 4 5
1 2 3 4 6
得出了j >= i : dp[i][j] = dp[i-1][j] + dp[i][j-i]
然而,这还是个大数问题,即使unsigned long long 都不行,开始一直没想通!
/*************************************************************************> File Name: DollarDayz_poj3181.cpp> Author: spzhao> Mail: spzhaol@163.com > Created Time: 2015年10月14日 星期三 11时13分22秒************************************************************************/#include<iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>#define mod 10000000000000000
using namespace std;const int N = 1005;
const int K = 105;
unsigned long long dp[100+16][1000+16][2];
int n,k;
void solve()
{for (int i = 1;i <= k;i++){for (int j = 1;j <= n;j++){if (j >= i){dp[i][j][0] = dp[i-1][j][0]+dp[i][j-i][0];dp[i][j][1] = dp[i-1][j][1]+dp[i][j-i][1];dp[i][j][0] += dp[i][j][1]/mod;dp[i][j][1] = dp[i][j][1]%mod;}else{dp[i][j][0] = dp[i-1][j][0];dp[i][j][1] = dp[i-1][j][1];}}}if (dp[k][n][0])cout << dp[k][n][0];cout << dp[k][n][1] << endl;
}
int main ()
{cin >> n >> k;memset(dp,0,sizeof(dp));dp[1][0][1] = 1;for (int i = 1;i <= k;i++)dp[i][0][1] = 1;solve();return 0;
}
转载于:https://www.cnblogs.com/ediszhao/p/4877997.html
Dollar Dayz poj3181相关推荐
- bzoj 1655: [Usaco2006 Jan] Dollar Dayz 奶牛商店(高精度完全背包)
1655: [Usaco2006 Jan] Dollar Dayz 奶牛商店 Time Limit: 5 Sec Memory Limit: 64 MB Submit: 599 Solved: 3 ...
- H - Dollar Dayz
Dollar Dayz Farmer John 想知道,在一家商品价格为1至K (1 <= K <= 100)的店有多少方法能正好花完他的N(1 <= N <= 1000)元钱 ...
- Dollar Dayz(完全背包 + 高精度)
完全背包 完全背包问题和基本的 0-1 背包问题非常类似,区别就是在完全背包问题中,每种物品有无限件. 从每种物品的角度考虑,求解完全背包问题的策略由对某种物品取或者不取变成了取0件.取1件.取2件- ...
- 挑战练习题2.3动态规划 poj3181 Dollar Dayz 完全背包
题目链接: http://poj.org/problem?id=3181 题意: 农夫约翰有N元钱,市场上有价值1--K的商品无限个,求所有的花钱方案? 题解: http://www.hankcs.c ...
- Dollar Dayz POJ - 3181(动态规划+大数高低位分离输出)
题意:就是给出二个数N,和k,有1~k种钱币,每种都 是无限个,用这些种类的钱币可以组合成总钱N有多少种方式. 解题:这就是一个完全背包,把N看成容量,钱币的类型值为 花费和价值.与记录有多少种路径的 ...
- Dollar Dayz POJ - 3181
解法 完全背包+大数...不想写大数了放个python得了 代码 dp=[0 for i in range(2000)] n,k=map(int,input().split()) num=[i for ...
- POJ 3181 Dollar Dayz DP
f[i][j]=f[i-j][j]+f[i][j-1],结果很大需要高精度. //#pragma comment(linker, "/STACK:1024000000,1024000000& ...
- poj 3181 Dollar Dayz (整数划分问题---递归+DP)
题目:http://poj.org/problem?id=3181 思路:将整数N划分为一系列正整数之和,最大不超过K.称为整数N的K划分. 递归:直接看代码: 动态规划:dp[i][j]:=将整数i ...
- Dollar Dayz
完全背包+高精度 #include<cstdio> #include<cstring> #define ll __int64 ll INF=100000000000000000 ...
最新文章
- 去大厂面试,说了没高并发经验,面试官还是抓着这个问!
- 使用Python分析姿态估计数据集COCO的教程
- Nimbus/Supervisor本地目录结构
- AES CBC模式下的CBC bit flipping Attack
- dma访问主存时_STM32F103单片机(五)——DMA
- source insight增加tab标签页的方法之sihook
- 解决The current branch is not configured for pull No value for key branch.master.merge found in config
- 携程基于Flink的实时特征平台
- HTTP API领域在围绕OAS进行整合
- mysql修改表的结构_MySQL修改表结构
- git remote传到远程
- 中国计算机学会推荐国际学术会议和期刊(A类)2019年
- Crash监控神器之腾讯Bugly
- 如何录制音频文件mp3?给你推荐好用的几款音频录制软件
- 2022款Thinkphp家政上门预约系统-全开源系统源码
- 利用Python you-get 下载网页视频
- 什么是linux手机软件?
- 经典激光雷达SLAM系统:LeGO-LOAM
- 面对层出不穷的问题,延迟开学的原因就是取消延时服务?
- 打造爆款产品只需四步,学会你也能爆单
热门文章
- roobo机器人怎么唱歌_可爱的小伙伴 ROOBO布丁豆豆智能陪护机器人评测
- tomca7.0 mysql配置连接池_tomcat7.0+mysql连接池配置
- python rpc_python与RPC服务
- 进去springstrap显示无响应_2020年,28寸IPS面板4K显示器合集,推荐几款代表性的...
- ios yymodel 将字典转数组模型_Python3 字典
- ei加声调怎么加_空调怎么加氟 空调加氟方法【介绍】
- 004_Bean标签
- c语言编程功率谱,有谁会用C编写求功率谱(答案越多越好)
- Visual Studio 2013软件安装教程
- 图像处理:图像中噪声分布和概率密度函数的关系