题目传送门

题目描述

Windy 定义了一种 Windy 数:不含前导零且相邻两个数字之差至少为 2 的正整数被称为 Windy 数。

Windy 想知道,在 A 和 B 之间,包括 A 和 B,总共有多少个 Windy 数?

输入格式

共一行,包含两个整数 A 和 B。

输出格式

输出一个整数,表示答案。

数据范围

1≤A≤B≤2×10^9

输入样例1:

1 10

输入样例2:

25 50

题解:

数位DP:

跟之前的情况一样,分离每一位数,从高位开始枚举,因为不能存在前导0,所以可以让最高位为1, 计算一下方案数

再特殊处理一下最高位为0,且无前导零的情况

#include<iostream>
#include<math.h>
#include<vector>
using namespace std;
const int N = 15;
int f[N][N];
void init()
{for(int i = 0; i <= 9; i++)f[1][i] = 1;    //预处理出每一位左分支的情况, for(int i = 2; i < N; i++)for(int j = 0; j <= 9; j++)for(int k = 0; k <= 9; k++)if(abs(j - k) >= 2)f[i][j] += f[i - 1][k];
}
int dp(int n)
{if(!n ) return 0; vector<int> nums;while(n)nums.push_back(n % 10), n /= 10;int res = 0;int last = -2;for(int i = nums.size() - 1; i >= 0; i--){int x = nums[i];for(int j = i == nums.size() - 1; j < x; j++)  //i为最高位时, 让j = 1, 这样就去掉了前导零的情况if(abs(j - last) >= 2)res += f[i + 1][j];if(abs(x - last) < 2) break;last = x;if(i == 0)res++;}//特殊处理最高位为0时,有前导零的情况, for(int i = 1; i < nums.size(); i++) //从低位到高位for(int j = 1; j <= 9; j++)  //从1开始枚举res += f[i][j];return res;
}
int main()
{int l, r;init();cin >> l >> r;cout << dp(r) - dp(l - 1) << endl;return 0;
}

AcWing1083. Windy数(数位DP)题解相关推荐

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

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

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

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

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

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

  4. BZOJ1026 [SCOI2009]windy数 数位dp

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

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

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

  6. WINDY数----数位dp

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

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

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

  8. 洛谷P2657 windy 数 数位dp

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

  9. BZOJ1026: [SCOI2009]windy数(数位dp)

    题意 题目链接 Sol 很zz的数位dp $f[i][j]$表示第$i$位,前一位是$j$的方案数 转移的时候枚举一下是否相同即可 注意当lim达到上界的时候是不能记忆化的! /**/ #includ ...

最新文章

  1. 使用jpmml-sparkml-executable生成PMML模型文件
  2. 有不含有重复数字的数组构造二叉树_Leetcode刷题记录:构建最大数二叉树
  3. 闭包函数python_Python--函数对象闭包函数
  4. 如何使用SAP Cloud for Customer的Key User Tool将Mashup添加到UI上
  5. 搜狐视频怎么设置自动连播
  6. python异常和错误(syntax errors 和 exceptions)
  7. 使用orCAD Library Builder建立TO-220的封装
  8. Dojo Shifter 2 for Mac(ae效果图层处理插件)
  9. hdu5773 2016年多校4 nlogn求LIS
  10. 好用的web报表设计器(报表工具)
  11. 基于Python的深度神经网络的中文期刊分类系统
  12. 使用STM32CubeMX创建USB MSC工程
  13. hone hone clock创意前端时钟
  14. 我的世界超能物质纳米机器人_超能物质复制物品教程(附图) - [MO]超能物质 (Matter Overdrive) - MC百科|最大的Minecraft中文MOD百科...
  15. matlab编写二分法程序,我写的程序,想用Matlab二分法实现,望高手帮忙!
  16. 中国光学级聚酯薄膜市场趋势分析与营销策略研究报告2022版
  17. python算法专项(六)——Tensorflow原理基础,三层网络
  18. MacOS编译LibreCAD
  19. UE4-4.26蓝图功能实现:按键升降电梯
  20. Raki的读paper小记:Image as a Foreign Language: BEIT Pretraining for All Vision and Vision-Language Tasks

热门文章

  1. tcpdf最新版 6.2版
  2. mySql 修改字段名
  3. 分享一个自己做的简易敏捷开发管理工具——AgileLite
  4. 在打包的时候,创建应用程序池,并自动将程序assign到新创建的池中(MSI制作)
  5. java基础编程思想题目2
  6. sql server 中DateName()函数及DatePart()函数
  7. SICP习题解答2.22
  8. hdu 5079 Square
  9. 最少拦截系统,简单dp,(学长说这是贪心?!。。。。。。也是醉了)
  10. SQL语句将表中数据导入到另一个数据库表中