Luogu P2657 [SCOI2009]windy数
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数相关推荐
- 题解 BZOJ1026 luogu P2657 [SCOI2009]windy数 数位DP
BZOJ & luogu 看到某大佬AC,本蒟蒻也决定学习一下玄学的数位$dp$ (以上是今年3月写的话(叫我鸽神$qwq$)) 思路:数位$DP$ 提交:2次 题解:(见代码) #inclu ...
- 洛谷 P2657 [SCOI2009] windy数 数位DP
大家觉得写还可以,可以点赞.收藏.关注一下吧! 也可以到我的个人博客参观一下,估计近几年都会一直更新!和我做个朋友吧!https://motongxue.cn 文章目录 P2657 [SCOI2009 ...
- P2657 [SCOI2009]windy数
P2657 [SCOI2009]windy数 题目描述 windy定义了一种windy数.不含前导零且相邻两个数字之差至少为2的正整数被称为windy数. windy想知道, 在A和B之间,包括A和B ...
- 洛谷P2657 [SCOI2009]windy数
洛谷P2657 [SCOI2009]windy数 本题是一道数位DP 看程序应该能看懂 中心思想:把一个数拆成每一位来处理 代码: #include<bits/stdc++.h> usin ...
- P2657 [SCOI2009] windy 数(数位DP)
题目链接:[SCOI2009] windy 数 - 洛谷 这是一道需要考虑前导0的数位DP题,为什么需要考虑前导0呢?其实原因很简单,因为有条件限制我们相邻两个数的差,所以我们在进行数位DP时必须把前 ...
- P2657 [SCOI2009]windy数 题解
博客园同步 原题链接 简要题意: 一个 相邻两个数字差的绝对值都 ≥2\geq 2≥2 且不含前导零 的数 被称为 "windy数".问从 aaa 到 bbb 的 "wi ...
- 数位dp入门题 洛谷P2657 [SCOI2009] windy 数
题干 传送门 windy 定义了一种 windy 数. 题目描述 不含前导零且相邻两个数字之差至少为 2的正整数被称为 windy 数.windy 想知道,在 a 和 b 之间,包括 a 和 b ,总 ...
- P2657 [SCOI2009]windy数(数位dp)
题目描述 windy定义了一种windy数.不含前导零且相邻两个数字之差至少为2的正整数被称为windy数. windy想知道, 在A和B之间,包括A和B,总共有多少个windy数? 输入输出格式 输 ...
- BZOJ1026 || 洛谷P2657 [SCOI2009]windy数【数位DP】
Time Limit: 1 Sec Memory Limit: 162 MB Description windy定义了一种windy数.不含前导零且相邻两个数字之差至少为2的正整数被称为windy数. ...
最新文章
- 开源Jekyll助您构建你的网站
- 【LeetCode】002 Add Two Numbers
- 算法设计与分析——回溯法——批处理作业调度
- 目前M院M师的教学乱象
- 电线直径对照表_电线平方与直径对照表
- obs点歌插件 html效果,OBS点歌插件
- C语言三种形式编九九乘法表,C语言九九乘法表(五种输出形式)
- mysql 等距随机_随机起点对称等距抽样公式的简便运用
- 路由器工作原理及路由、路由表
- 传真百科:传真通讯技术的发展历史
- 以太坊中的nonce
- KSO - docker部署Rabbitmq的详细讲解以及各种隐藏坑
- 手把手教会你使用Arcgis画流场图
- 根据给定的三边,判断能否则组成一个三角形若能用这三个数作为边长组成三角形( 任意两边之和大于第三边),能组成三角形计算并输出该三角形的面积,否则输出Can‘t。 (提示:Can‘t输出直接放到双引号中
- Java语言程序设计基础篇(第十版 梁勇著)课后习题答案 - 第二章
- 机器学习 刀光剑影 之屠龙刀
- STM32蓝牙控制循迹避障小车源代码——4.蓝牙控制
- 我用心收藏的精典网站Ruby,HIBERNATE相关 推荐收藏
- 世界读书日-多读书,读好书!
- Bugly升级SDK适配Android N
热门文章
- 子桓说:学几招商业套路,以后用的上!
- 使用PIA查找组件的PeopleSoft导航
- 大数据平台监控指南(附技术选型、监控指标)
- 配置Nginx前端Apache后端服务器LNMPA-与LNMP,HHVM性能比拼
- Ubuntu系统Pycharm输入中文时有下划线解决办法
- 李迟2022年10月工作生活总结
- 安卓系统最好用的5款epub阅读器
- Hive常用函数总结(datediff、pmod、from_unixtime、instr、split、concat、cast、contact_ws、collect_set、row_numb)
- 《邂逅美丽》之赏析2
- 移动端页面一键保存到桌面