hdu 4722(记忆化搜索)
来源:互联网 发布:linux多线程编程 书籍 编辑:程序博客网 时间:2024/05/22 08:27
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4722
思路:简单的记忆化搜索,留意一下A==0时的情况就可以了。
1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<algorithm> 5 using namespace std; 6 typedef long long ll; 7 8 int digit[22]; 9 ll dp[22][12];10 11 ll dfs(int pos,int pre,int doing)12 {13 if(pos==-1){14 return pre==0;15 }16 if(!doing&&dp[pos][pre]!=-1){17 return dp[pos][pre];18 }19 int end=doing?digit[pos]:9;20 ll ans=0;21 for(int i=0;i<=end;i++){22 int npre=(pre+i)%10;23 ans+=dfs(pos-1,npre,doing&&i==end);24 }25 if(!doing){26 dp[pos][pre]=ans;27 }28 return ans;29 }30 31 32 ll Solve(ll n)33 {34 int pos=0;35 while(n){36 digit[pos++]=n%10;37 n/=10;38 }39 return dfs(pos-1,0,1);40 }41 42 int main()43 {44 ll a,b;45 int t=1,_case;46 memset(dp,-1,sizeof(dp));47 scanf("%d",&_case);48 while(_case--){49 scanf("%I64d%I64d",&a,&b);50 printf("Case #%d: ",t++);51 if(a==0){52 printf("%I64d\n",Solve(b));53 }else 54 printf("%I64d\n",Solve(b)-Solve(a-1));55 }56 return 0;57 }58 59 60
0 0
- hdu 4722(记忆化搜索)
- 【记忆化搜索】HDU
- hdu 1069 记忆化搜索
- 记忆化搜索 HDU 1158
- hdu 1078记忆化搜索
- hdu 1078 记忆化搜索
- hdu 2437 (记忆化搜索)
- hdu 1260(记忆化搜索)
- hdu 1142 记忆化搜索
- Hdu 4597记忆化搜索
- HDU 1078 记忆化搜索
- HDU 3336 记忆化搜索
- hdu 1142 记忆化搜索
- hdu 4597(记忆化搜索)
- hdu 1428 记忆化搜索
- hdu 4597 记忆化搜索
- hdu 1978 记忆化搜索
- hdu 1078 记忆化搜索
- hdu 1561(树形dp)
- hdu 1520(简单树形dp)
- hdu 1513(dp+滚动数组)
- hdu 4240在(最大流)
- 大端法、小端法、网络字节序
- hdu 4722(记忆化搜索)
- hdu 4496(并查集)
- hdu 4685(匹配+强连通分量)
- uva 11381(神奇的构图、最小费用最大流)
- hdu 4291(矩阵+暴力求循环节)
- sgu 326(经典网络流构图)
- zoj 3370(二分+二分图染色)
- hdu 3760(2次bfs求最短路)
- UVALive 6044(双连通分量的应用)