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

Mountain Number FZU-2109数位dp

时间:2019-05-03 18:24:41      阅读:115      评论:0      收藏:0      [点我收藏+]

标签:isp   tar   include   while   错题   scanf   dfs   题意   oda   

技术图片
 1 #include<cstdio>
 2 int a[36],dp[36][10][2];//dp[i][j][k]第i数位的前一个数是j奇偶性是k的答案 
 3 int dfs(int p,int pre,bool jo,bool lim)
 4 {
 5     if(p<0)
 6         return 1;
 7     if(!lim&&dp[p][pre][jo]!=-1)
 8         return dp[p][pre][jo];
 9     int up=(lim ? a[p] : 9),ans=0;
10     for(int i=0;i<=up;i++)
11     {
12         if(!jo&&i<=pre)
13             ans+=dfs(p-1,i,1,lim&&i==a[p]);
14         else if(jo&&i>=pre)
15             ans+=dfs(p-1,i,0,lim&&i==a[p]);
16     }
17     if(!lim)
18         dp[p][pre][jo]=ans;
19     return ans;
20 }
21 int solve(int x)
22 {
23     int n=0;
24     while(x)
25     {
26         a[n++]=x%10;
27         x/=10;
28     }
29     return dfs(n-1,9,0,1);
30 }
31 int main()
32 {
33     int t,l,r;
34     for(int i=0;i<=32;i++)
35         for(int j=0;j<=9;j++)
36             for(int k=0;k<2;k++)
37                 dp[i][j][k]=-1;
38     scanf("%d",&t);
39     while(t--)
40     {
41         scanf("%d%d",&l,&r);
42         printf("%d\n",solve(r)-solve(l-1)); 
43     }
44     return 0;
45 }
View Code

 

Mountain Number FZU-2109数位dp

标签:isp   tar   include   while   错题   scanf   dfs   题意   oda   

原文地址:https://www.cnblogs.com/LMCC1108/p/10805630.html

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