bzoj 1026: [SCOI2009]windy数
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数相关推荐
- BZOJ 1026 [SCOI2009]windy数
1026: [SCOI2009]windy数 Description windy定义了一种windy数.不含前导零且相邻两个数字之差至少为2的正整数被称为windy数. windy想知道,在A和B之间 ...
- bzoj:1026: [SCOI2009]windy数(数位dp)
1026: [SCOI2009]windy数 Time Limit: 1 Sec Memory Limit: 162 MB Submit: 7982 Solved: 3593 Descriptio ...
- bzoj 1026: [SCOI2009]windy数(数位dp)
1026: [SCOI2009]windy数 Time Limit: 1 Sec Memory Limit: 162 MB Submit: 7688 Solved: 3470 [Submit][S ...
- bzoj 1026: [SCOI2009]windy数 数位DP算法笔记
数位DP入门题之一 也是我所做的第一道数位DP题目 (其实很久以前就遇到过 感觉实现太难没写) 数位DP题目貌似多半是问从L到R内有多少个数满足某些限制条件 只要出题人不刻意去卡多一个$log$什么的 ...
- bzoj 1026 //1026: [SCOI2009]windy数
bzoj 1026 //1026: [SCOI2009]windy数 //在线测评地址https://www.lydsy.com/JudgeOnline/problem.php?id=1026 / ...
- 1026: [SCOI2009]windy数 (按位DP)
定义windy数:相邻数字的差至少是2的数,例如10不是windy数,而13是windy数.求给定区间中有多少windy数.区间端点范围为 [1, 2000000000] dfs写法 #include ...
- [SCOI2009]windy数
[SCOI2009]windy数 BZOJ luogu 数位dp入门题 复杂度:\(O(11×10×10)\) 详细见注释 #define ll long long #include<bits/ ...
- 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时必须把前 ...
最新文章
- VPLS(Virtual Private LAN Service)
- CSP浏览器安全策略备忘
- 5-5 表格输出 (5分)
- 关于DCF(判别相关滤波器)的闭式解详细推导
- MSN Messenger终于好使了
- Windows系统Python直接调用C++ DLL
- 剑指offer之左旋转字符串
- Redis存储优化--小对象压缩
- python面试题之如何计算一个字符串的长度
- 电脑大小写怎么切换_小白买了Mac pro电脑学会基本操作
- visio自己画的图怎么填充_Visio怎么画直线并填充颜色?
- 下载 安装 破解Axure
- CFA2019notes的PDF版本,热乎乎的百度网盘分享
- Laravel文档阅读笔记-How to use @auth and @guest directives in Laravel
- 单例模式、适配器模式
- Qt安装包下载链接资源
- 项目管理十大知识领域47个子过程
- Shiro大概原理和快速开始
- 微信商城游戏被宝塔防CC攻击拦截
- 在手机上用cdsn写博客
热门文章
- 使用ajax提交图片,提交已经注入文件的表单给后台上传图片 使用ajaxsubmit
- rabbitmq充分利mysql_牛逼哄哄的 RabbitMQ 到底有啥用?
- java 反射静态内部类_android-反射的使用(反射静态内部类、非静态内部类、匿名内部类等)...
- vue 表单 input radio
- 网络通信 netstat
- 图解TCPIP-IP 网际协议-IP地址(网络层)
- Ansible Privilege Escalation
- MySQL The JSON Data Type(JSON格式数据)
- 面试题系列:网络篇夺命连环12问
- Linux学习总结(77)—— Shell 开发运维经验总结