POJ_3181_记忆化搜索、高精度优化
来源:互联网 发布:黎巴嫩真主党 知乎 编辑:程序博客网 时间:2024/06/02 03:11
在床上打代码也是够爽
题意:
屌屌的约翰去买东西,他一共打算买N元钱的东西,他有无穷张1-K面值的钱,问他又多少中方法不找零支付N元钱。
(1 <= N <= 1000, 1 <= K <= 100)
果断是动态规划或者记忆化搜索,但是N,K太大,爆long long,高精度加法即可
但是十进制高精度TLE,采用高位进制,最终采用10^5进制,最大一组数据也可以瞬出。高位进制输出时注意会少0,要判断。
代码如下
#include<iostream>#include<cstdio>#include<cstring>#include<string>#include<cstdlib>#include<ctime>using namespace std;#define mxn 1010#define mxk 110int n,k;struct bign{int a[10];int len;bign(){len=-1;}bign set(int in){len=0;while(in){a[len++]=in%100000;in/=100000;}return *this;}bign(int in){set(in);}void set(){len=-1;}bool ok(){return len!=-1;}bign operator + (const bign& in)const{bign ret;int pre=0;ret.len=max(in.len,len);for(int i=0;i<ret.len;++i){int tem=pre;if(i<len)tem+=a[i];if(i<in.len)tem+=in.a[i];pre=tem/100000;ret.a[i]=tem%100000;}if(pre)ret.a[ret.len++]=pre%100000;return ret;}void print(){printf("%d",a[len-1]);for(int i=len-2;i>=0;--i){if(a[i]/10000==0)printf("0");else if(a[i]/1000==0)printf("00");else if(a[i]/100==0)printf("000");else if(a[i]/10==0)printf("0000");printf("%d",a[i]);}}};bign dp[mxn][mxk];bign dfs(int now,int val){if(dp[now][val].ok())return dp[now][val];//cout<<"now "<<now<<" val "<<val<<endl;if(now==n)return dp[now][val].set(1);dp[now][val].set(0);if(val==k+1)return dp[now][val].set(0);for(int i=0;i*val+now<=n;++i)dp[now][val]=dp[now][val]+dfs(now+i*val,val+1);return dp[now][val];}int main(){scanf("%d%d",&n,&k);bign ans=dfs(0,1);ans.print();puts("");return 0;}
0 0
- POJ_3181_记忆化搜索、高精度优化
- POJ 2506 高精度+递推+记忆化搜索
- BZOJ 2656 ZJOI 2012 数列(sequence) 高精度+记忆化搜索
- BZOJ 2656 ZJOI2012 数列(sequence) 高精度+记忆化搜索
- HDU3920 状压DP+优化+记忆化搜索
- 实验室(搜索->记忆化搜索->动规优化)
- 递归优化 POJ1579 记忆化搜索 剪枝 去掉重复计算
- 动态规划优化之使用Map记忆化搜索
- 集训-恐怖电影(状压DP+记忆化搜索优化)
- [笔记]: 记忆化搜索+hash优化&树形dp
- [vijos 1599]: 货币(记忆化搜索+hash优化)
- 记忆化搜索例题
- PKU1088---记忆化搜索
- PKU1088 记忆化搜索
- HDU1078 记忆化搜索
- HDU1501 记忆化搜索
- HDU1978 记忆化搜索
- poj1661 记忆化搜索
- sgu104
- angularjs遍历两次
- 2014 ACM-ICPC Beijing Warm-up (北京赛区热身赛)
- my ipod touch4's plug-in and offline apps
- Delphi XE6 for Android 让手机震动
- POJ_3181_记忆化搜索、高精度优化
- 雷观(四):手机不可能取代电脑
- 数据库基本表的操作——创建表,索引和查询
- 织梦DEDECMS模板调用时间不显示的错误原因
- 第十二周项目三 用递归方法求解(求出两个数的最大公约数)
- 指针函数和函数指针
- 顺序队列的实现
- 字符串的常用函数
- UFLDL Exercise:Sparse Autoencoder