挑战程序设计 DP POJ 3181
来源:互联网 发布:淘宝网上怎么买药 编辑:程序博客网 时间:2024/05/18 13:31
题目链接
题目大意:完全背包
思路 : dp[i+1][j] = dp[i][j] + dp[i][j-i]
注意:会爆long long,要用两个long long 数组,一个存储高位,另一个存储低位
#include <iostream>#include <cstdio>#include <cstring>using namespace std;const long long M = 1000000000000000;int main(){ int n,k; long long dp[110][1010],a[110][1010]; while(~scanf("%d%d", &n, &k))//n元钱,k种硬币 { memset(dp, 0, sizeof dp); memset(a, 0, sizeof a); dp[1][0] = 1;//表示前1种钱币前的0种钱币凑成0元只有一种可能 for(int i = 1; i <= k; i++) for(int j = 0; j <= n; j++) if(j >= i) { dp[i+1][j] = (dp[i][j] + dp[i+1][j-i])%M; a[i+1][j] = a[i][j] + a[i+1][j-i] + (dp[i][j] + dp[i+1][j-i])/M; } else { dp[i+1][j] = dp[i][j]; a[i+1][j] = a[i][j] + (dp[i][j])/M; } if(a[k][n]) printf("%lld%015lld\n", a[k+1][n], dp[k+1][n]); else printf("%lld\n",dp[k+1][n]); } return 0;}/*1.前面i种硬币已经凑成j元 dp[i][j]2.前面i种硬币凑成j-k*i元 加上k*i凑成j*/
阅读全文
0 0
- 挑战程序设计 DP POJ 3181
- POJ 3046 Ant Counting 简单DP 挑战程序设计实战习题
- POJ 3176-Cow Bowling [dp] 《挑战程序设计竞赛》2.3
- 挑战程序设计竞赛---POJ.2686
- 挑战程序设计竞赛---POJ.3233
- POJ 1742-Coins [dp 多重背包问题] 《挑战程序设计竞赛》2.3
- POJ 1065-Wooden Sticks [dp+Dilworth定理] 《挑战程序设计竞赛》2.3
- [挑战程序设计竞赛] POJ 3253 - Fence Repair
- [挑战程序设计竞赛] POJ 3009 - Curling 2.0
- [挑战程序设计竞赛] POJ 3699 - Meteor Shower
- [挑战程序设计竞赛] POJ 2718 - Smallest Difference
- [挑战程序设计竞赛] POJ 3050 - Hopscotch
- [挑战程序设计竞赛] POJ 2376 - Cleaning Shifts
- [挑战程序设计竞赛] POJ 1328 - Radar Installation
- [挑战程序设计竞赛] POJ 3040 - Allowance
- [挑战程序设计竞赛] POJ 1862 - Stripies
- POJ 1990 MooFest 题解 《挑战程序设计竞赛》
- 挑战程序设计竞赛 poj 2431 优先队列
- 使用PageOffice实现文档(word,excel,pdf)在线预览编辑
- 2.2 分别定义int,short类型的变量各一个,并依次输出它们的存储空间大小
- 如何理解语言
- SpringBoot自我整理学习3(springboot集成Mybatis+PageHelp分页插件)
- TensorFlow快速入门
- 挑战程序设计 DP POJ 3181
- [学习笔记]Python基础_安装和环境配置
- 用户画像越完整,用户本人越遭殃
- Linux-IDE编译工具的开发介绍
- IQActionSheetPickerView
- java并发-java内存模型(6)
- 网狐荣耀棋牌最新版源码下载
- gdb如何打印程序中的stl变量
- 2.3 分别定义float,double类型的变量各一个,并依次输出它们的存储空间大小