题目链接:点击查看

题目大意:求a到b闭区间内满足相邻两个数字之差大于等于2的数字个数

分析:dp[i][j]表示第i位上数字为j的结果,pos表示位数,pre表示上一位数,lead表示是否有前导0,limit表示是否为最高位

代码:

#include<iostream>
#include<cstdio>
#include<string>
#include<cstring>
#include<algorithm>
#include<stack>
#include<queue>
#include<map>
#include<sstream>
#include<cmath>
using namespace std;typedef long long LL;const int inf=0x3f3f3f3f;const int N=30;LL dp[20][10];int b[N];LL dfs(int pos,int pre,bool lead,bool limit)
{if(pos==-1)return 1;if(!limit&&dp[pos][pre]!=-1&&pre>0)//pre>0,如果pre==0,涉及到位数,需要再次循环return dp[pos][pre];int up=limit?b[pos]:9;LL ans=0;for(int i=0;i<=up;i++){if(abs(i-pre)>=2||lead)ans+=dfs(pos-1,i,lead&&(i==0),limit&&(i==b[pos]));}if(!limit)dp[pos][pre]=ans;return ans;
}LL solve(LL n)
{int cnt=0;while(n){b[cnt++]=n%10;n/=10;}return dfs(cnt-1,-1,true,true);
}int main()
{
//  freopen("input.txt","r",stdin);LL a,b;memset(dp,-1,sizeof(dp));while(cin>>a>>b){cout<<solve(b)-solve(a-1)<<endl;}return 0;
} 

HYSBZ - 1026 windy数(数位dp)相关推荐

  1. BZOJ 1026 windy数 (数位DP)

    题意 区间[A,B]上,总共有多少个不含前导零且相邻两个数字之差至少为2的正整数? 思路 状态设计非常简单,只需要pos.limit和一个前驱数pre就可以了,每次枚举当前位时判断是否与上一位相差2即 ...

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

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

  3. bzoj 1026: [SCOI2009]windy数 数位DP算法笔记

    数位DP入门题之一 也是我所做的第一道数位DP题目 (其实很久以前就遇到过 感觉实现太难没写) 数位DP题目貌似多半是问从L到R内有多少个数满足某些限制条件 只要出题人不刻意去卡多一个$log$什么的 ...

  4. 【bzoj1026】[SCOI2009]windy数 数位dp

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

  5. BZOJ1026 [SCOI2009]windy数 数位dp

    欢迎访问~原文出处--博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1026 题目概括 求区间[A,B]中有多少数满足下面的条件. 条件:该数相邻两位之差不小于2. 题解 ...

  6. AcWing1083. Windy数(数位DP)题解

    题目传送门 题目描述 Windy 定义了一种 Windy 数:不含前导零且相邻两个数字之差至少为 2 的正整数被称为 Windy 数. Windy 想知道,在 A 和 B 之间,包括 A 和 B,总共 ...

  7. WINDY数----数位dp

    题目链接:https://ac.nowcoder.com/acm/problem/20268 题目描述 windy定义了一种windy数.不含前导零且相邻两个数字之差至少为2的正整数被称为windy数 ...

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

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

  9. 洛谷P2657 windy 数 数位dp

    题目背景 windy 定义了一种 windy 数. 题目描述 不含前导零且相邻两个数字之差至少为 2 的正整数被称为 windy 数.windy 想知道,在 a 和 b 之间,包括 a 和 b ,总共 ...

最新文章

  1. centos7 mysql安装
  2. Android中使用GridView实现标签效果源码
  3. COVID-19和世界幸福报告数据告诉我们什么?
  4. Tomcat本地正常!但是部署到服务器后,mysql插入中文乱码问题解决!
  5. js入门笔记整理(二)——操作符
  6. 百度飞桨之python小白逆袭训练营
  7. windows oracle增量备份脚本,oracle 增量备份脚本
  8. Linux串口工具ckermit打印 android log
  9. winhttp 访问https_asp程序使用Microsoft.XMLHTTP对象请求https时出错,使用WinHttp.WinHttpRequest.5.1解决...
  10. WGS84坐标系、Web墨卡托、GCJ02坐标系、BD09坐标系—常用坐标系简述
  11. 蓝牙诊断工具_蓝牙故障诊断和使用指南
  12. 如何裁剪视频?这两个简单方法你们还不快来学
  13. 陈强教授《机器学习及R应用》课程 第五章作业
  14. TFS工作项模板自定义指南
  15. Atom 编辑器的语法导航
  16. Win10 卸载 Cortana
  17. 2018微软秋招面试经验(软件工程师岗位)
  18. CENTOS上的网络安全工具(十二)走向Hadoop(4) Hadoop 集群搭建
  19. Nginx软件介绍及下载地址
  20. 深入剖析NVMe Over Fabrics

热门文章

  1. Nacos服务注册接口
  2. 服务拆分-案例Demo
  3. kubernetes-Pod结构
  4. Zookeeper基于Java访问-权限模式
  5. 序列化技术的选型-技术层面
  6. 项目前端页面框架介绍
  7. 区域数据导入功能(OCUpload插件使用)
  8. 循环基础-程序计数从0开始
  9. 一个小米SRE的日常问题排查记录
  10. 支付系统信息流和资金流