数位dp入门题 洛谷P2657 [SCOI2009] windy 数
题干
传送门
windy 定义了一种 windy 数。
题目描述
不含前导零且相邻两个数字之差至少为 2的正整数被称为 windy 数。windy 想知道,在 a 和 b 之间,包括 a 和 b ,总共有多少个 windy 数?
输入格式
输入只有一行两个整数,分别表示 a 和 b。
输出格式
输出一行一个整数表示答案。
输入输出样例
输入 #1
1 10
输出 #1
9
输入 #2
25 50
输出 #2
20
数位dp入门题,考虑记忆化搜索需要几个参量。
首先基本必有的limit,判上界,zero,判前导0,st,目前第几位。
然后本题因为要求相邻2位绝对值差大于等于2,所以再引入pre,表上一位的值。
然后就当模板打了。
code:
#include<bits/stdc++.h>
using namespace std;
//数位dp st第几位 pre上一位值 li上位是否到上界 zero是否有前导0
//1:不超上界 2:绝对值之差大于2
int l,r,num[11],f[11][11][2][2],len;
int Read()
{int x=0,f=1;char ch=getchar();while(!isdigit(ch)){if(ch=='-') f=-1;ch=getchar();}while(isdigit(ch)){x=(x<<1)+(x<<3)+ch-'0';ch=getchar();}return f*x;
}
int dfs(int st,int pre,int li,int zero)
{int sum=0;if(!st) return 1;if(f[st][pre][li][zero]) return f[st][pre][li][zero];for(int i=0;i<=9;i++) {if((!li||i<=num[st])&&(abs(i-pre)>=2||zero))sum+=dfs(st-1,i,i==num[st]&&li,zero&&!i);}f[st][pre][li][zero]=sum;return sum;
}
int part(int x)
{memset(f,0,sizeof(f));len=0;while(x){num[++len]=x%10;x/=10;}return dfs(len,11,1,1);
}
int main()
{l=Read(),r=Read();printf("%d",part(r)-part(l-1));
}
数位dp入门题 洛谷P2657 [SCOI2009] windy 数相关推荐
- 洛谷P2657 [SCOI2009]windy数
洛谷P2657 [SCOI2009]windy数 本题是一道数位DP 看程序应该能看懂 中心思想:把一个数拆成每一位来处理 代码: #include<bits/stdc++.h> usin ...
- 洛谷 P2657 [SCOI2009] windy数 数位DP
大家觉得写还可以,可以点赞.收藏.关注一下吧! 也可以到我的个人博客参观一下,估计近几年都会一直更新!和我做个朋友吧!https://motongxue.cn 文章目录 P2657 [SCOI2009 ...
- BZOJ1026 || 洛谷P2657 [SCOI2009]windy数【数位DP】
Time Limit: 1 Sec Memory Limit: 162 MB Description windy定义了一种windy数.不含前导零且相邻两个数字之差至少为2的正整数被称为windy数. ...
- 洛谷 P2657 [SCOI2009] windy 数 (题解+代码)
题目传送门:https://www.luogu.com.cn/problem/P2657 题解: 数位dp 计算给定数字所有数位上的值 然后从高位到低位暴力枚举所有的情况 当前一个位置上限时,当前最大 ...
- P2657 [SCOI2009]windy数
P2657 [SCOI2009]windy数 题目描述 windy定义了一种windy数.不含前导零且相邻两个数字之差至少为2的正整数被称为windy数. windy想知道, 在A和B之间,包括A和B ...
- P2657 [SCOI2009] windy 数(数位DP)
题目链接:[SCOI2009] windy 数 - 洛谷 这是一道需要考虑前导0的数位DP题,为什么需要考虑前导0呢?其实原因很简单,因为有条件限制我们相邻两个数的差,所以我们在进行数位DP时必须把前 ...
- 题解 BZOJ1026 luogu P2657 [SCOI2009]windy数 数位DP
BZOJ & luogu 看到某大佬AC,本蒟蒻也决定学习一下玄学的数位$dp$ (以上是今年3月写的话(叫我鸽神$qwq$)) 思路:数位$DP$ 提交:2次 题解:(见代码) #inclu ...
- P2657 [SCOI2009]windy数(数位dp)
题目描述 windy定义了一种windy数.不含前导零且相邻两个数字之差至少为2的正整数被称为windy数. windy想知道, 在A和B之间,包括A和B,总共有多少个windy数? 输入输出格式 输 ...
- Luogu P2657 [SCOI2009]windy数
https://www.luogu.org/problemnew/show/P2657 题目描述 windy定义了一种windy数.不含前导零且相邻两个数字之差至少为2的正整数被称为windy数. w ...
最新文章
- CFNet 论文解读
- IOS 关于NSString类型的属性为什么有时用copy,有时用strong呢?
- ASP.NET MVC + ADO.NET EF 项目实战(一):应用程序布局设计
- 【C】C99 restrict 关键字
- SpringMVC运行原理
- echarts饼图选中一块_echarts圆饼图设置默认选中项并在中间显示文字
- 微信小程序学习14--小程序微信支付流程分析及实现
- OpenCV 读写图像、读写像素、修改像素值(案例:图像反处理)
- 机房收费系统——退卡
- 初识vue——vue的发展历程
- 如何低成本减少企业知识流失?天翎知识文档系统+群晖NAS值得一试
- 反汇编和二进制分析工具清单
- 上传音乐到Android模拟器的SD卡,并在Android模拟器上播放
- css–sprit_高级CSS –类已用完–通过使用结构化格式标签避免类
- 磁力链接搜索网站研究心得!
- 当excel不够用时,如何利用Access进行数据分析?
- 微信怎么解绑手机号?手把手教你具体操作步骤
- 高级的E2EE——交叉签名(区块链密码签名)(第一篇-SAS)
- Python入门之字典
- DV、OV、EV SSL(https)证书如何选择?