zoukankan      html  css  js  c++  java
  • hdu 3886 Final Kichiku “Lanlanshu” 数位DP

    思路:

    dp[i][j][k]:满足在字符串的j位,前一位数字是k。

    代码如下:

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cmath>
     4 #include<algorithm>
     5 #include<cstring>
     6 #define ll long long
     7 #define M 100000000
     8 using namespace std;
     9 char str[101],a[101],b[101];
    10 int len,bit[101],dp[101][101][10];
    11 bool ok(int i,int u,int v)
    12 {
    13     if(str[i]=='/') return u<v;
    14     if(str[i]=='-') return u==v;
    15     if(str[i]=='\') return u>v;
    16 }
    17 int dfs(int pos,int j,int pre,bool h,bool f)
    18 {
    19     if(pos==-1) return j==len;
    20     if(!f&&dp[pos][j][pre]!=-1) return dp[pos][j][pre];
    21     int ans=0;
    22     int e=f?bit[pos]:9;
    23     for(int i=0;i<=e;i++){
    24         if(h) ans+=dfs(pos-1,j,i,h&&i==0,f&&i==e);
    25         else if(j<len&&ok(j,pre,i)) ans+=dfs(pos-1,j+1,i,h,f&&i==e);
    26         else if(j>0&&ok(j-1,pre,i)) ans+=dfs(pos-1,j,i,h,f&&i==e);
    27         ans%=M;
    28     }
    29     if(!f) dp[pos][j][pre]=ans;
    30     return ans;
    31 }
    32 int solve(char an[],bool f)
    33 {
    34     int m=0,i,j=0,le=strlen(an);
    35     while(an[j]=='0') j++;
    36     for(i=le-1;i>=j;i--) bit[m++]=an[i]-'0';
    37     if(f&&m>0){
    38         for(i=0;i<m;i++){
    39             if(bit[i]){
    40                 bit[i]--;
    41                 break;
    42             }
    43             else bit[i]=9;
    44         }
    45     }
    46     return dfs(m-1,0,0,1,1);
    47 }
    48 int main()
    49 {
    50     int i,j,k,m,n;
    51     while(scanf("%s",str)!=EOF){
    52         len=strlen(str);
    53         scanf("%s%s",a,b);
    54         memset(dp,-1,sizeof(dp));
    55         printf("%08d
    ",(solve(b,0)-solve(a,1)+M)%M);
    56     }
    57     return 0;
    58 }
    View Code
  • 相关阅读:
    【转载】理解本真的REST架构风格
    Linux常用命令
    使用MongoDB存储集合的一些问题
    AutoMapper快速上手
    JavaScript instanceof 运算符深入剖析
    使用c#对MongoDB进行查询(1)
    centos7安装rabbitmq3.7.9
    nginx1.14.0版本高可用——keepalived双机热备
    nginx1.14.0版本https加密配置
    nginx1.14.0版本负载均衡upstream配置
  • 原文地址:https://www.cnblogs.com/xin-hua/p/3336894.html
Copyright © 2011-2022 走看看