POJ
来源:互联网 发布:微信聊天数据恢复 编辑:程序博客网 时间:2024/06/01 07:49
传送门:POJ3181
题意:有1到k共k种数,每种数有无限个,问能组成n的不同方案有多少种。
思路:开始没想到要高精度,用了大白P63页的方法去做,wa一发,搜题解才发现这不就是个裸的完全背包么。。容量是n,有价值1-k的k种物品。因为题目没要求取模,所以要用到高精度,模拟大数加法可以做,不过dalao们都是将答案分成两部分,一部分计算高位,一部分计算低位,这样既能加快运算速度,写起来还简便,不过这样写的前提条件是最大的答案不超过36位,否则就算是用两个long long 也表示不了了。
代码:
#include<iostream>#include<stdio.h>#define ll long longusing namespace std;typedef pair<int,int>P;const int MAXN=100010;const ll inf = 1e18;int gcd(int a,int b){return b?gcd(b,a%b):a;}ll dp1[MAXN];//高位 ll dp2[MAXN];//低位 int main(){int N, K;cin >> N >> K;dp2[0] = 1;for(int i = 1; i <= K; i++){for(int j = i; j <= N; j++){dp1[j] = dp1[j] + dp1[j - i] + (dp2[j] + dp2[j - i]) / inf; dp2[j] = (dp2[j] + dp2[j - i]) % inf;}}if(dp1[N])printf("%lld%018lld", dp1[N], dp2[N]);elsecout << dp2[N] << endl; return 0;}
阅读全文
0 0
- POJ
- poj
- POJ
- POJ
- poj
- poj
- POJ
- POJ
- poj
- POJ
- POJ
- POJ
- POJ
- POJ
- POJ
- POJ
- POJ
- POJ
- IntelliJ IDEA创建Java项目和Java Web项目
- java设计模式之---简单工厂模式
- ubuntu临时修改和永久修改主机名
- 移动物体监控系统的设计与开发完整版
- 643. Maximum Average Subarray I
- POJ
- 第七篇 :微信公众平台开发实战Java版之如何获取微信用户基本信息
- Oracle内存过度消耗风险提醒
- php简单的单点登录
- Ansible执行原理
- Maven入门(含实例教程)
- PAT 1033旧键盘打字
- Balanced-工具类App原型分享
- SSH 填坑