https://www.luogu.org/problemnew/show/P2657

题目描述

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

在A和B之间,包括A和B,总共有多少个windy数?

输入输出格式

输入格式:

包含两个整数,A B。

输出格式:

一个整数

输入输出样例

输入样例#1: 复制

1 10

输出样例#1: 复制

9

输入样例#2: 复制

25 50

输出样例#2: 复制

20

说明

100%的数据,满足 1 <= A <= B <= 2000000000 。

这是一道最最基础的数位

我不会写有上界的。

#include<cstdio>
#include<cmath>
using namespace std;int l,r,f[20][20],a[20],len;inline int sum(int x)
{   len=0;while(x)a[++len]=x%10,x/=10;int ret=0;for(int i=1;i<len;i++)for(int j=1;j<=9;j++) ret+=f[i][j];for(int i=1;i<a[len];i++) ret+=f[len][i];for(int i=len-1;i;i--){for(int j=0;j<a[i];j++) if(abs(j-a[i+1])>=2) ret+=f[i][j];if(abs(a[i]-a[i+1])<2) break;}return ret;
}
int main()
{for(int i=0;i<=9;i++) f[1][i]=1;for(int i=2;i<=10;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];scanf("%d%d",&l,&r);printf("%d",sum(r+1)-sum(l));return 0;
}

我又回来了

这次我终于学会了dfs版的,突然感觉自己是真的菜(一把辛酸泪)

#include<cstdio>
#include<cmath>
using namespace std;int l,r,len;
int f[20][20],a[20];int dfs(int t,int lst,int zeo,int lim)
{//printf("%d %d %d %d\n",t,lst,zeo,lim);if(!t) return 1;if(!zeo&&!lim&&f[t][lst]!=-1) return f[t][lst];int ret=0;for(int i=0;i<=9;i++){//   printf("%d %d\n",i,a[t]);if(lim&&i>a[t]) break; if(abs(i-lst)<2) continue;ret+=dfs(t-1,(zeo&&i==0)?-2:i,zeo&&i==0,lim&&a[t]==i?1:0);} if(!zeo&&!lim)f[t][lst]=ret;return ret;
}
int sum(int x)
{len=0;while(x)a[++len]=x%10,x/=10;for(int i=1;i<=15;i++)for(int j=0;j<=9;j++) f[i][j]=-1; //puts("____________");return dfs(len,-2,1,1);
}
int main()
{scanf("%d%d",&l,&r);printf("%d\n",sum(r)-sum(l-1));return 0;
}

Luogu P2657 [SCOI2009]windy数相关推荐

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

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

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

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

  3. P2657 [SCOI2009]windy数

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

  4. 洛谷P2657 [SCOI2009]windy数

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

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

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

  6. P2657 [SCOI2009]windy数 题解

    博客园同步 原题链接 简要题意: 一个 相邻两个数字差的绝对值都 ≥2\geq 2≥2 且不含前导零 的数 被称为 "windy数".问从 aaa 到 bbb 的 "wi ...

  7. 数位dp入门题 洛谷P2657 [SCOI2009] windy 数

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

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

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

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

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

最新文章

  1. 开源Jekyll助您构建你的网站
  2. 【LeetCode】002 Add Two Numbers
  3. 算法设计与分析——回溯法——批处理作业调度
  4. 目前M院M师的教学乱象
  5. 电线直径对照表_电线平方与直径对照表
  6. obs点歌插件 html效果,OBS点歌插件
  7. C语言三种形式编九九乘法表,C语言九九乘法表(五种输出形式)
  8. mysql 等距随机_随机起点对称等距抽样公式的简便运用
  9. 路由器工作原理及路由、路由表
  10. 传真百科:传真通讯技术的发展历史
  11. 以太坊中的nonce
  12. KSO - docker部署Rabbitmq的详细讲解以及各种隐藏坑
  13. 手把手教会你使用Arcgis画流场图
  14. 根据给定的三边,判断能否则组成一个三角形若能用这三个数作为边长组成三角形( 任意两边之和大于第三边),能组成三角形计算并输出该三角形的面积,否则输出Can‘t。 (提示:Can‘t输出直接放到双引号中
  15. Java语言程序设计基础篇(第十版 梁勇著)课后习题答案 - 第二章
  16. 机器学习 刀光剑影 之屠龙刀
  17. STM32蓝牙控制循迹避障小车源代码——4.蓝牙控制
  18. 我用心收藏的精典网站Ruby,HIBERNATE相关 推荐收藏
  19. 世界读书日-多读书,读好书!
  20. Bugly升级SDK适配Android N

热门文章

  1. 子桓说:学几招商业套路,以后用的上!
  2. 使用PIA查找组件的PeopleSoft导航
  3. 大数据平台监控指南(附技术选型、监控指标)
  4. 配置Nginx前端Apache后端服务器LNMPA-与LNMP,HHVM性能比拼
  5. Ubuntu系统Pycharm输入中文时有下划线解决办法
  6. 李迟2022年10月工作生活总结
  7. 安卓系统最好用的5款epub阅读器
  8. Hive常用函数总结(datediff、pmod、from_unixtime、instr、split、concat、cast、contact_ws、collect_set、row_numb)
  9. 《邂逅美丽》之赏析2
  10. 移动端页面一键保存到桌面