码迷,mamicode.com
首页 > Windows程序 > 详细

luogu P2657 [SCOI2009]windy数 数位dp 记忆化搜索

时间:2018-09-12 21:14:43      阅读:189      评论:0      收藏:0      [点我收藏+]

标签:href   记忆化搜索   etc   code   ref   ble   记忆话搜索   amp   题目   

题目链接

luogu P2657 [SCOI2009]windy数

题解

我有了一种所有数位dp都能用记忆话搜索水的错觉

代码

#include<cstdio> 
#include<algorithm> 
inline int read() { 
    int x = 0,f = 1; 
    char c = getchar(); 
    while(c < '0' || c > '9') c = getchar(); 
    while(c <= '9' && c >= '0') x = x * 10 + c - '0',c = getchar(); 
    return x * f ;
} 
int a,b; 
int f[100][100];
int num[100];  
int tot; 
int dfs(int n,int lim,int pre)  { 
    if(n == 0) return 1; 
    if(!lim && f[n][pre]) return f[n][pre]; 
    int sum = 0; 
    for(int i = 0;i <= (lim ? num[n] : 9);++ i)  {
        if(i == 0 && pre == -1) sum += dfs(n - 1,lim && i == num[n],-1); 
        else if(abs(pre - i) >= 2) sum += dfs(n - 1,lim && i == num[n],i);  
    } 
    if(!lim) f[n][pre] = sum ; 
    return sum; 
} 
int solve(int x) { 
    int tot = 0; 
    while(x) num[++ tot] = x % 10,x /= 10; 
    return dfs(tot,1,-1); 
} 
int main() { 
    a = read(),b = read(); 
    printf("%d\n", solve(b) - solve(a - 1)); 
    return 0; 
} 

luogu P2657 [SCOI2009]windy数 数位dp 记忆化搜索

标签:href   记忆化搜索   etc   code   ref   ble   记忆话搜索   amp   题目   

原文地址:https://www.cnblogs.com/sssy/p/9637193.html

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