HYSBZ - 1026 windy数(数位dp)
题目链接:点击查看
题目大意:求a到b闭区间内满足相邻两个数字之差大于等于2的数字个数
分析:dp[i][j]表示第i位上数字为j的结果,pos表示位数,pre表示上一位数,lead表示是否有前导0,limit表示是否为最高位
代码:
#include<iostream>
#include<cstdio>
#include<string>
#include<cstring>
#include<algorithm>
#include<stack>
#include<queue>
#include<map>
#include<sstream>
#include<cmath>
using namespace std;typedef long long LL;const int inf=0x3f3f3f3f;const int N=30;LL dp[20][10];int b[N];LL dfs(int pos,int pre,bool lead,bool limit)
{if(pos==-1)return 1;if(!limit&&dp[pos][pre]!=-1&&pre>0)//pre>0,如果pre==0,涉及到位数,需要再次循环return dp[pos][pre];int up=limit?b[pos]:9;LL ans=0;for(int i=0;i<=up;i++){if(abs(i-pre)>=2||lead)ans+=dfs(pos-1,i,lead&&(i==0),limit&&(i==b[pos]));}if(!limit)dp[pos][pre]=ans;return ans;
}LL solve(LL n)
{int cnt=0;while(n){b[cnt++]=n%10;n/=10;}return dfs(cnt-1,-1,true,true);
}int main()
{
// freopen("input.txt","r",stdin);LL a,b;memset(dp,-1,sizeof(dp));while(cin>>a>>b){cout<<solve(b)-solve(a-1)<<endl;}return 0;
}
HYSBZ - 1026 windy数(数位dp)相关推荐
- BZOJ 1026 windy数 (数位DP)
题意 区间[A,B]上,总共有多少个不含前导零且相邻两个数字之差至少为2的正整数? 思路 状态设计非常简单,只需要pos.limit和一个前驱数pre就可以了,每次枚举当前位时判断是否与上一位相差2即 ...
- 洛谷 P2657 [SCOI2009] windy数 数位DP
大家觉得写还可以,可以点赞.收藏.关注一下吧! 也可以到我的个人博客参观一下,估计近几年都会一直更新!和我做个朋友吧!https://motongxue.cn 文章目录 P2657 [SCOI2009 ...
- bzoj 1026: [SCOI2009]windy数 数位DP算法笔记
数位DP入门题之一 也是我所做的第一道数位DP题目 (其实很久以前就遇到过 感觉实现太难没写) 数位DP题目貌似多半是问从L到R内有多少个数满足某些限制条件 只要出题人不刻意去卡多一个$log$什么的 ...
- 【bzoj1026】[SCOI2009]windy数 数位dp
题目描述 windy定义了一种windy数.不含前导零且相邻两个数字之差至少为2的正整数被称为windy数. windy想知道,在A和B之间,包括A和B,总共有多少个windy数? 输入 包含两个整数 ...
- BZOJ1026 [SCOI2009]windy数 数位dp
欢迎访问~原文出处--博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1026 题目概括 求区间[A,B]中有多少数满足下面的条件. 条件:该数相邻两位之差不小于2. 题解 ...
- AcWing1083. Windy数(数位DP)题解
题目传送门 题目描述 Windy 定义了一种 Windy 数:不含前导零且相邻两个数字之差至少为 2 的正整数被称为 Windy 数. Windy 想知道,在 A 和 B 之间,包括 A 和 B,总共 ...
- WINDY数----数位dp
题目链接:https://ac.nowcoder.com/acm/problem/20268 题目描述 windy定义了一种windy数.不含前导零且相邻两个数字之差至少为2的正整数被称为windy数 ...
- P2657 [SCOI2009]windy数(数位dp)
题目描述 windy定义了一种windy数.不含前导零且相邻两个数字之差至少为2的正整数被称为windy数. windy想知道, 在A和B之间,包括A和B,总共有多少个windy数? 输入输出格式 输 ...
- 洛谷P2657 windy 数 数位dp
题目背景 windy 定义了一种 windy 数. 题目描述 不含前导零且相邻两个数字之差至少为 2 的正整数被称为 windy 数.windy 想知道,在 a 和 b 之间,包括 a 和 b ,总共 ...
最新文章
- centos7 mysql安装
- Android中使用GridView实现标签效果源码
- COVID-19和世界幸福报告数据告诉我们什么?
- Tomcat本地正常!但是部署到服务器后,mysql插入中文乱码问题解决!
- js入门笔记整理(二)——操作符
- 百度飞桨之python小白逆袭训练营
- windows oracle增量备份脚本,oracle 增量备份脚本
- Linux串口工具ckermit打印 android log
- winhttp 访问https_asp程序使用Microsoft.XMLHTTP对象请求https时出错,使用WinHttp.WinHttpRequest.5.1解决...
- WGS84坐标系、Web墨卡托、GCJ02坐标系、BD09坐标系—常用坐标系简述
- 蓝牙诊断工具_蓝牙故障诊断和使用指南
- 如何裁剪视频?这两个简单方法你们还不快来学
- 陈强教授《机器学习及R应用》课程 第五章作业
- TFS工作项模板自定义指南
- Atom 编辑器的语法导航
- Win10 卸载 Cortana
- 2018微软秋招面试经验(软件工程师岗位)
- CENTOS上的网络安全工具(十二)走向Hadoop(4) Hadoop 集群搭建
- Nginx软件介绍及下载地址
- 深入剖析NVMe Over Fabrics