题干

传送门
windy 定义了一种 windy 数。

题目描述
不含前导零且相邻两个数字之差至少为 2的正整数被称为 windy 数。windy 想知道,在 a 和 b 之间,包括 a 和 b ,总共有多少个 windy 数?

输入格式
输入只有一行两个整数,分别表示 a 和 b。

输出格式
输出一行一个整数表示答案。

输入输出样例
输入 #1
1 10
输出 #1
9
输入 #2
25 50
输出 #2
20

数位dp入门题,考虑记忆化搜索需要几个参量。
首先基本必有的limit,判上界,zero,判前导0,st,目前第几位。
然后本题因为要求相邻2位绝对值差大于等于2,所以再引入pre,表上一位的值。
然后就当模板打了。

code:

#include<bits/stdc++.h>
using namespace std;
//数位dp st第几位 pre上一位值 li上位是否到上界 zero是否有前导0
//1:不超上界 2:绝对值之差大于2
int l,r,num[11],f[11][11][2][2],len;
int Read()
{int x=0,f=1;char ch=getchar();while(!isdigit(ch)){if(ch=='-') f=-1;ch=getchar();}while(isdigit(ch)){x=(x<<1)+(x<<3)+ch-'0';ch=getchar();}return f*x;
}
int dfs(int st,int pre,int li,int zero)
{int sum=0;if(!st) return 1;if(f[st][pre][li][zero]) return f[st][pre][li][zero];for(int i=0;i<=9;i++) {if((!li||i<=num[st])&&(abs(i-pre)>=2||zero))sum+=dfs(st-1,i,i==num[st]&&li,zero&&!i);}f[st][pre][li][zero]=sum;return sum;
}
int part(int x)
{memset(f,0,sizeof(f));len=0;while(x){num[++len]=x%10;x/=10;}return dfs(len,11,1,1);
}
int main()
{l=Read(),r=Read();printf("%d",part(r)-part(l-1));
}

数位dp入门题 洛谷P2657 [SCOI2009] windy 数相关推荐

  1. 洛谷P2657 [SCOI2009]windy数

    洛谷P2657 [SCOI2009]windy数 本题是一道数位DP 看程序应该能看懂 中心思想:把一个数拆成每一位来处理 代码: #include<bits/stdc++.h> usin ...

  2. 洛谷 P2657 [SCOI2009] windy数 数位DP

    大家觉得写还可以,可以点赞.收藏.关注一下吧! 也可以到我的个人博客参观一下,估计近几年都会一直更新!和我做个朋友吧!https://motongxue.cn 文章目录 P2657 [SCOI2009 ...

  3. BZOJ1026 || 洛谷P2657 [SCOI2009]windy数【数位DP】

    Time Limit: 1 Sec Memory Limit: 162 MB Description windy定义了一种windy数.不含前导零且相邻两个数字之差至少为2的正整数被称为windy数. ...

  4. 洛谷 P2657 [SCOI2009] windy 数 (题解+代码)

    题目传送门:https://www.luogu.com.cn/problem/P2657 题解: 数位dp 计算给定数字所有数位上的值 然后从高位到低位暴力枚举所有的情况 当前一个位置上限时,当前最大 ...

  5. P2657 [SCOI2009]windy数

    P2657 [SCOI2009]windy数 题目描述 windy定义了一种windy数.不含前导零且相邻两个数字之差至少为2的正整数被称为windy数. windy想知道, 在A和B之间,包括A和B ...

  6. P2657 [SCOI2009] windy 数(数位DP)

    题目链接:[SCOI2009] windy 数 - 洛谷 这是一道需要考虑前导0的数位DP题,为什么需要考虑前导0呢?其实原因很简单,因为有条件限制我们相邻两个数的差,所以我们在进行数位DP时必须把前 ...

  7. 题解 BZOJ1026 luogu P2657 [SCOI2009]windy数 数位DP

    BZOJ & luogu 看到某大佬AC,本蒟蒻也决定学习一下玄学的数位$dp$ (以上是今年3月写的话(叫我鸽神$qwq$)) 思路:数位$DP$ 提交:2次 题解:(见代码) #inclu ...

  8. P2657 [SCOI2009]windy数(数位dp)

    题目描述 windy定义了一种windy数.不含前导零且相邻两个数字之差至少为2的正整数被称为windy数. windy想知道, 在A和B之间,包括A和B,总共有多少个windy数? 输入输出格式 输 ...

  9. Luogu P2657 [SCOI2009]windy数

    https://www.luogu.org/problemnew/show/P2657 题目描述 windy定义了一种windy数.不含前导零且相邻两个数字之差至少为2的正整数被称为windy数. w ...

最新文章

  1. CFNet 论文解读
  2. IOS 关于NSString类型的属性为什么有时用copy,有时用strong呢?
  3. ASP.NET MVC + ADO.NET EF 项目实战(一):应用程序布局设计
  4. 【C】C99 restrict 关键字
  5. SpringMVC运行原理
  6. echarts饼图选中一块_echarts圆饼图设置默认选中项并在中间显示文字
  7. 微信小程序学习14--小程序微信支付流程分析及实现
  8. OpenCV 读写图像、读写像素、修改像素值(案例:图像反处理)
  9. 机房收费系统——退卡
  10. 初识vue——vue的发展历程
  11. 如何低成本减少企业知识流失?天翎知识文档系统+群晖NAS值得一试
  12. 反汇编和二进制分析工具清单
  13. 上传音乐到Android模拟器的SD卡,并在Android模拟器上播放
  14. css–sprit_高级CSS –类已用完–通过使用结构化格式标签避免类
  15. 磁力链接搜索网站研究心得!
  16. 当excel不够用时,如何利用Access进行数据分析?
  17. 微信怎么解绑手机号?手把手教你具体操作步骤
  18. 高级的E2EE——交叉签名(区块链密码签名)(第一篇-SAS)
  19. Python入门之字典
  20. DV、OV、EV SSL(https)证书如何选择?

热门文章

  1. sqlmap的使用 (以封神台题目为例)
  2. 4.15早盘黄金行情平平,白银TD纸白银行情分析
  3. 基于macd、kdj、ma技术指标分析股票多空方向——应用开发1 前言
  4. 一本正经需求洽谈老黄历 No.136
  5. 苹果工具条_苹果iOS 13.4大版本更新正式推送!新功能+新表情登场
  6. Session与Cookie(自定义Session)
  7. python模拟太阳系_用Unity3D实现太阳系仿真
  8. 华为HCIE专家认证相关简介
  9. Sencha Touch
  10. OFDM 中的 IFFT/FFT 注意事项