码迷,mamicode.com
首页 > 其他好文 > 详细

Hdu3555---数位dp

时间:2018-10-05 15:11:29      阅读:185      评论:0      收藏:0      [点我收藏+]

标签:pen   一个   spl   ==   display   nbsp   its   print   clu   

这道题是hdu 3652的简单版本,它的容易之处在于hdu3652在求值的时候要保留其%13的余数,这道题不用!

技术分享图片
 1 #include<bits/stdc++.h>
 2 typedef long long LL;
 3 using namespace std;
 4 int t;
 5 LL n;
 6 LL dp[20][3]; // 上一步为0, 
 7 int bit[20];
 8 
 9 
10 LL dfs(int pos,int have,int lim){
11     if(pos<=0) return have==2;
12     if(!lim&&dp[pos][have]!=-1) return dp[pos][have];
13     int num=lim?bit[pos]:9;
14     LL ans=0;
15     for(int i=0;i<=num;i++){
16         int next_h=have;
17         if(have==1&&i!=4) next_h=0;//第一个和第二个的顺序不能搞错,
18         if(have==1&&i==9) next_h=2;//如果i==9放到第一位,就会被后面的i!=4给完全覆盖 
19         if(have==0&&i==4) next_h=1;
20         ans+=dfs(pos-1,next_h,lim&&i==num);
21     }
22     if(!lim) dp[pos][have]=ans;
23     return ans;    
24 }
25 
26 LL solve(LL m){
27     int len=0;
28     while(m>0){
29         bit[++len]=m%10;m=m/10;
30     }
31     return dfs(len,0,1);
32 }
33 
34 int main(){
35     scanf("%d",&t);
36     memset(dp,-1,sizeof(dp));
37     while(t--){
38         scanf("%lld",&n);
39         printf("%lld\n",solve(n));
40     }
41     return 0;
42 }
View Code

 

Hdu3555---数位dp

标签:pen   一个   spl   ==   display   nbsp   its   print   clu   

原文地址:https://www.cnblogs.com/pandaking/p/9744730.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!