数位DP入门题之一 也是我所做的第一道数位DP题目 (其实很久以前就遇到过 感觉实现太难没写)

数位DP题目貌似多半是问从L到R内有多少个数满足某些限制条件

只要出题人不刻意去卡多一个$log$什么的(当然${log_2{(long long)}}$就有$60$)

方法显然还是非常丰富的 找一些自己写得比较顺的方法会了就行

------------------------------------------------------------------------------------------------------------------------------

比如windy数这题 我的做法便是先从低位到高位先预处理出有x位 最高位为y时有多少满足题意的数

然后再从高位到低位扫一遍 分最高的几位是否与限制的最高的几位相等去分情况讨论即可

#include <bits/stdc++.h>
using namespace std;
int f[11][10],lim[11];
void prepare()
{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];
}
int calc(int x)
{if(!x)return 0;int top=0,re=0;while(x){lim[++top]=x%10;x/=10;}for(int i=top;i;--i){if(top-i>=2&&abs(lim[i+1]-lim[i+2])<=1)break;for(int j=0+(i==top);j<lim[i]+(i==1);++j)if(i==top||abs(j-lim[i+1])>=2)re+=f[i][j];}for(int i=top-1;i;--i)for(int j=1;j<=9;++j)re+=f[i][j];return re;
}
int main()
{int a,b;prepare();scanf("%d%d",&a,&b);printf("%d",calc(b)-calc(a-1));return 0;
}

不过这题限制条件只是和相邻的位有关 后面应该会遇到不少限制条件更难表示与讨论的题目

转载于:https://www.cnblogs.com/sagitta/p/4748016.html

bzoj 1026: [SCOI2009]windy数 数位DP算法笔记相关推荐

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

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

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

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

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

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

  4. BZOJ 1026 [SCOI2009]windy数

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

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

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

  6. BZOJ1026 [SCOI2009]windy数 数位dp

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

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

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

  8. bzoj 1026: [SCOI2009]windy数

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

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

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

最新文章

  1. 使用NetBeans IDE开发C程序
  2. android listview显示数据库内容
  3. 自由职业半年,我又滚回职场了...
  4. 2.18比赛(T2,T3留坑)
  5. Redis 架构之 cluster
  6. 用notepad++打造自己的C/C++语言IDE --是时候和DOS屏幕说再见了
  7. 程序员“离职小技巧”
  8. C++基础教程之数据是如何封装的
  9. jQuery AJAX实现调用页面后台方法
  10. 携程基于云的软呼叫中心及客服平台架构实践\n
  11. mesa3d源代码阅读笔记
  12. Java简介:Java是什么?及Java语言的特点
  13. 儒豹手机搜索发布2008年各频道关键词排行榜
  14. 基于matlab的神经网络设计,matlab神经网络应用设计
  15. 探索未来|一文看懂小米年度技术峰会 · 软件技术专场
  16. 电子书格式转换 Epubor Ultimate 7 附注册机
  17. 2020用户行为分析领域最具商业合作价值企业盘点
  18. 文件的后缀名怎样重命名,重命名为大写字母
  19. 记一次华为2288H V5服务器安装Ubuntu18.04操作系统(详细流程)
  20. STM32用ST-link下载程序

热门文章

  1. Windows API获取系统配置文件的配置参数
  2. 职业生涯第二年回顾(2011.2~2012.2)
  3. JS高级 - 面向对象5(继承,引用)
  4. Linux软件包管理基本操作入门
  5. 风险案例-25期-与有过合作经历客户在新合同约定中过于简单、范围不明确,导致客户对新需求工作量不认可...
  6. pymongo TypeError
  7. silverlight 客户端之间的通讯
  8. b站编程课程资源汇总
  9. 修改/etc/sudoers权限后的补救方法
  10. 【咸鱼教程】基于系统时间的计时器DateTimer(不受FPS影响)