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

【一本通提高数位动态规划】windy数

时间:2019-03-27 11:08:35      阅读:304      评论:0      收藏:0      [点我收藏+]

标签:https   sizeof   res   lin   数位dp   onclick   ble   get   规划   

传送门【一本通提高数位动态规划】windy数

技术图片
#include<bits/stdc++.h>
using namespace std;
#define ll long long
ll dp[15][15],ans;
bool vis[15][15];
ll a[15];
ll l,r,len;
ll dfs(ll pos,ll pre,ll zero,ll limit)
{
    if(pos>len)return 1;
    if(!limit&&vis[pos][pre])return dp[pos][pre];
    ll res=limit?a[len-pos+1]:9,ret=0;
    for(int i=0;i<=res;i++)
    {
        if(abs(i-pre)<2) continue;
        if(zero&&i==0) ret+=dfs(pos+1,-2,1,limit&&i==res);
        else ret+=dfs(pos+1,i,0,limit&&i==res);
    }
    if((!limit)&&(!zero))dp[pos][pre]=ret;
    vis[pos][pre]=1;
    return ret;
}
inline void get(ll x)
{
    len=0;
    while(x)a[++len]=x%10,x/=10;
}
int main()
{
    scanf("%lld%lld",&l,&r);
    get(r);
    ll ans=dfs(1,-2,1,1);
    memset(dp,0,sizeof dp);
    memset(vis,0,sizeof vis);
    get(l-1);
    ll ans1=dfs(1,-2,1,1);
    printf("%lld",ans-ans1);
}
数位DP

 数位DP详解

【一本通提高数位动态规划】windy数

标签:https   sizeof   res   lin   数位dp   onclick   ble   get   规划   

原文地址:https://www.cnblogs.com/yanghaokun/p/10605720.html

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