中文题面,注意st是不可以放到dp里面的,否则每次solve都要清零

注意状态的转移要st&&i==0,因为子结构也可能是st(当高位取0时)

而st是必然合法的

#include<bits/stdc++.h>
#define rep(i,j,k) for(register int i=j;i<=k;i++)
using namespace std;
const int maxn = 20;
typedef long long ll;
int a[maxn];
ll l,r,dp[maxn][15]; ll DP(int cur,int st,int pre,int limit){
if(cur==0) return 1;
if(!st&&!limit&&dp[cur][pre]!=-1)return dp[cur][pre];
int up=limit?a[cur]:9;
ll ans=0;
rep(i,0,up){
if(!st&&abs(pre-i)<2)continue;
ans+=DP(cur-1,st&&i==0,i,limit&&a[cur]==i);
}
return (limit||st)?ans:dp[cur][pre]=ans;
}
ll solve(ll num){
int cur=0;
while(num){
a[++cur]=num%10;
num/=10;
}
return DP(cur,1,1212,1);
}
int main(){
memset(dp,-1,sizeof dp);
while(~scanf("%lld%lld",&l,&r)){
printf("%lld\n",solve(r)-solve(l-1));
}
return 0;
}

BZOJ - 1026 数位DP的更多相关文章

  1. bzoj 3668 数位DP

    收获: 1.如果有很多位操作,并且不包含+-×/等高级运算,那么可以一位一位考虑,如果求一个最优解,可以尝试逐位确定,这道题因为原始攻击值有范围,那么就需要数位DP. /*************** ...

  2. bzoj 1833 数位dp

    很裸的数位dp. #include<bits/stdc++.h> #define LL long long #define fi first #define se second #defi ...

  3. bzoj 3209 数位DP+欧拉定理

    枚举1的个数,统计有那么多1的数的个数 /************************************************************** Problem: 3209 Us ...

  4. BZOJ 3679 数位DP

    思路: f[i][j]表示i位数乘积为j的方案数 j的取值最多5000多种,那就开个map存一下好了 f[i][mp[k*rec[j]]]+=f[i-1][j]; //By SiriusRen #in ...

  5. BZOJ 3209 数位DP

    思路: 先预处理出来组合数 按位做 枚举sum[x]是多少 注意Mod不是一个质数 //By SiriusRen #include <cstdio> using namespace std ...

  6. _bzoj1026 [SCOI2009]windy数【数位dp】

    传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=1026 数位dp果断记忆化搜索,代码量少~ 程序里我用11代表前导零. #include &l ...

  7. [BZOJ 1026] [SCOI 2009] Windy数 【数位DP】

    题目链接:BZOJ - 1026 题目分析 这道题是一道数位DP的基础题,对于完全不会数位DP的我来说也是难题.. 对于询问 [a,b] 的区间的答案,我们对询问进行差分,求 [0,b] - [0,a ...

  8. [bzoj 1026]windy数(数位DP)

    题目:http://www.lydsy.com/JudgeOnline/problem.php?id=1026 分析: 简单的数位DP啦 f[i][j]表示数字有i位,最高位的数值为j的windy数总 ...

  9. bzoj 1026 [SCOI2009]windy数 数位dp

    1026: [SCOI2009]windy数 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline ...

随机推荐

  1. Docker学习笔记_Dockerfile常用指令

    Dockerfile常用指令

  2. SQL Server 2008 R2 Express 不能启动

    今天,新安装了Sql Server 2008 R2 Express,准备部署相应系统,在完成了数据库还原,系统部署以后,从浏览器里输入系统网址,出现登录页面,登录时报错,无法连上数据库.在查找原因的过 ...

  3. ubuntu 14 编译ARM g2o-20160424

    1. 安装eigen sudo apt-get install libeigen3-dev sudo apt-get install libsuitesparse-dev sudo apt-get i ...

  4. anacondas 下 安装xgboost & keras

    mac : 安装anaconda, cd到anaconda 目录下 pip install xgboost 测试: 在当前的¥ python , 进入python 环境 import xgboost ...

  5. Binder的工作机制浅析

    在Android开发中,Binder主要用于Service中,包括AIDL和Messenger,其中Messenger的底层实现就是AIDL,所以我们这里通过AIDL来分析一下Binder的工作机制. ...

  6. Jackson Streaming API to read and write JSON

    Jackson supports read and write JSON via high-performance Jackson Streaming APIs, or incremental mod ...

  7. Git代码冲突常见解决方法

    在发布这个配置文件的时候,会发生代码冲突: error: Your local changes to the following files would be overwritten by merge ...

  8. [Lua快速了解一下]Lua的语法

    -注释 -- 两个减号是行注释 -块注释 --[[ 这是块注释 这是块注释 --]] -变量 Lua的数字只有double型,64bits, Lua的字符串string支持双引号或者单引号 以下例子会 ...

  9. adb命令安装及卸载应用

    一.手机连接电脑,检测手机是否已开启授权并连接成功 adb devices 二.安装应用 adb install UYUN-CARRIER-Android.apk 三.卸载应用 1.查看应用包名 ad ...

  10. Django中使用后台网站模板

    背景: 一直想自己开发一个网站,但是前端知识又不多,好在有模板可以使用,下载地址:https://download.csdn.net/download/wjgccsdn/10843808 开干:   ...