Time Limit: 1 Sec Memory Limit: 162 MB
Submit: 9998 Solved: 4629
[Submit][Status][Discuss]
Description

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

  包含两个整数,A B。
Output

  一个整数
Sample Input
【输入样例一】

1 10

【输入样例二】

25 50
Sample Output
【输出样例一】

9

【输出样例二】

20
HINT

【数据规模和约定】

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

解题思路

数位dp,dp[i][j]表示前i位,第i位为j的方案数。首先预处理出dp数组。
然后用试填法一步一步的填数,细节很多。注意最后还要判断一下这个数是否为windy数。

代码

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<cstdlib>using namespace std;
typedef long long LL;LL a,b,ans,dp[15][15];
int len,wei[15];inline void prework(){for(register int i=0;i<=9;i++) dp[1][i]=1;for(register int i=1;i<10;i++)for(register int j=0;j<=9;j++)for(register int k=0;k<=9;k++)if(abs(j-k)>=2)dp[i+1][j]+=dp[i][k];
}       inline LL Solve(LL x){if(x==0) return 0;len=0;ans=0;while(x){wei[++len]=x%10;x/=10;}for(register int i=len-1;i;i--)for(register int j=1;j<=9;j++)ans+=dp[i][j];for(register int i=1;i<wei[len];i++)ans+=dp[len][i];for(register int i=len-1;i;i--){for(register int j=0;j<wei[i];j++)if(abs(j-wei[i+1])>=2)ans+=dp[i][j];if(abs(wei[i+1]-wei[i])<2) break;}for(register int i=2;i<=len;i++)if(abs(wei[i]-wei[i-1])<2) return ans;return ans+1;
}int main(){prework();scanf("%lld%lld",&a,&b);printf("%lld",Solve(b)-Solve(a-1));return 0;
}

转载于:https://www.cnblogs.com/sdfzsyq/p/9676931.html

bzoj 1026: [SCOI2009]windy数相关推荐

  1. BZOJ 1026 [SCOI2009]windy数

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

  2. bzoj:1026: [SCOI2009]windy数(数位dp)

    1026: [SCOI2009]windy数 Time Limit: 1 Sec  Memory Limit: 162 MB Submit: 7982  Solved: 3593 Descriptio ...

  3. bzoj 1026: [SCOI2009]windy数(数位dp)

    1026: [SCOI2009]windy数 Time Limit: 1 Sec  Memory Limit: 162 MB Submit: 7688  Solved: 3470 [Submit][S ...

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

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

  5. bzoj 1026 //1026: [SCOI2009]windy数

    bzoj 1026 //1026: [SCOI2009]windy数   //在线测评地址https://www.lydsy.com/JudgeOnline/problem.php?id=1026 / ...

  6. 1026: [SCOI2009]windy数 (按位DP)

    定义windy数:相邻数字的差至少是2的数,例如10不是windy数,而13是windy数.求给定区间中有多少windy数.区间端点范围为 [1, 2000000000] dfs写法 #include ...

  7. [SCOI2009]windy数

    [SCOI2009]windy数 BZOJ luogu 数位dp入门题 复杂度:\(O(11×10×10)\) 详细见注释 #define ll long long #include<bits/ ...

  8. P2657 [SCOI2009]windy数

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

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

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

最新文章

  1. VPLS(Virtual Private LAN Service)
  2. CSP浏览器安全策略备忘
  3. 5-5 表格输出 (5分)
  4. 关于DCF(判别相关滤波器)的闭式解详细推导
  5. MSN Messenger终于好使了
  6. Windows系统Python直接调用C++ DLL
  7. 剑指offer之左旋转字符串
  8. Redis存储优化--小对象压缩
  9. python面试题之如何计算一个字符串的长度
  10. 电脑大小写怎么切换_小白买了Mac pro电脑学会基本操作
  11. visio自己画的图怎么填充_Visio怎么画直线并填充颜色?
  12. 下载 安装 破解Axure
  13. CFA2019notes的PDF版本,热乎乎的百度网盘分享
  14. Laravel文档阅读笔记-How to use @auth and @guest directives in Laravel
  15. 单例模式、适配器模式
  16. Qt安装包下载链接资源
  17. 项目管理十大知识领域47个子过程
  18. Shiro大概原理和快速开始
  19. 微信商城游戏被宝塔防CC攻击拦截
  20. 在手机上用cdsn写博客

热门文章

  1. 使用ajax提交图片,提交已经注入文件的表单给后台上传图片 使用ajaxsubmit
  2. rabbitmq充分利mysql_牛逼哄哄的 RabbitMQ 到底有啥用?
  3. java 反射静态内部类_android-反射的使用(反射静态内部类、非静态内部类、匿名内部类等)...
  4. vue 表单 input radio
  5. 网络通信 netstat
  6. 图解TCPIP-IP 网际协议-IP地址(网络层)
  7. Ansible Privilege Escalation
  8. MySQL The JSON Data Type(JSON格式数据)
  9. 面试题系列:网络篇夺命连环12问
  10. Linux学习总结(77)—— Shell 开发运维经验总结