• Mountain Number FZU-2109数位dp


     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
    ",solve(r)-solve(l-1)); 
    43     }
    44     return 0;
    45 }
    View Code
  • 相关阅读:
    最新Xcode7.x环境下上架iOS App到AppStore 完整流程
    rails提供的validators
    Ruby 符号【转】
    xaml学习笔记
    fedora安装rails缺少js runtime和cannot load such file -- sqlite3/sqlite3_native解决办法
    学习笔记——敏捷开发
    结队编程(电梯调度问题)
    【转】javascript操作Select标记中options集合
    【软件工程】Word frequency program
    【转】诗社之死
  • 原文地址:https://www.cnblogs.com/LMCC1108/p/10805630.html
Copyright © 2020-2023  润新知