一本通1587【例 3】Windy 数
1587: 【例 3】Windy 数
时间限制: 1000 ms 内存限制: 524288 KB
题目描述
原题来自:SCOI 2009
Windy 定义了一种 Windy 数:不含前导零且相邻两个数字之差至少为 2 的正整数被称为 Windy 数。
Windy 想知道,在 A 和 B 之间,包括 A 和 B,总共有多少个 Windy 数?
输入格式
一行两个数,分别为 A,B。
输出格式
输出一个整数,表示答案。
样例
样例输入 1
1 10
样例输出 1
9
样例输入 2
25 50
样例输出 2
20
数据范围与提示
20% 的数据,满足 1≤A≤B≤10^6;
100% 的数据,满足 1≤A≤B≤2×10^9。
sol:windy数,也是很友好的数位dp,也像数字游戏一样搞一搞,dp[i][j][Bo1][Bo2]第i位,填的数字为j,是否是上界,是否是前导0就over了
#include <bits/stdc++.h>
using namespace std;
int Num[],dp[][][][];
inline int dfs(int Weiz,int Shuz,bool Shangj,bool Qiand0)
{
if(dp[Weiz][Shuz][Shangj][Qiand0]) return dp[Weiz][Shuz][Shangj][Qiand0];
if(Weiz==) return (dp[Weiz][Shuz][Shangj][Qiand0]=);
int i,Up=(Shangj)?(Num[Weiz-]):();
// printf("Up=%d\n",Up);
for(i=;i<=Up;i++) if((Qiand0)||(abs(Shuz-i)>))
{
bool Bo1=(Shangj&&i==Up),Bo2=(Qiand0&&i==);
dp[Weiz][Shuz][Shangj][Qiand0]+=dfs(Weiz-,i,Bo1,Bo2);
}
return dp[Weiz][Shuz][Shangj][Qiand0];
}
inline int Solve(int n)
{
if(n==) return ;
memset(dp,,sizeof dp);
*Num=;
while(n)
{
Num[++*Num]=n%;
n/=;
}
int i,ans=;
ans+=dfs(*Num,,,);
// printf("Beg ans=%d\n",ans);
for(i=;i<Num[*Num];i++)
{
ans+=dfs(*Num,i,,);
}
ans+=dfs(*Num,Num[*Num],,);
return ans;
}
int main()
{
int l,r;
scanf("%d%d",&l,&r);
printf("%d\n",Solve(r)-Solve(l-));
return ;
}
/*
input
1 10
output
9 input
25 50
output
20
*/
一本通1587【例 3】Windy 数的更多相关文章
- BZOJ1026: [SCOI2009]windy数[数位DP]
1026: [SCOI2009]windy数 Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 6346 Solved: 2831[Submit][Sta ...
- BZOJ 1026 【SCOI2009】 windy数
Description windy定义了一种windy数.不含前导零且相邻两个数字之差至少为2的正整数被称为windy数. windy想知道, 在A和B之间,包括A和B,总共有多少个windy数? I ...
- 【BZOJ-1026】windy数 数位DP
1026: [SCOI2009]windy数 Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 5230 Solved: 2353[Submit][Sta ...
- bzoj 1026 [SCOI2009]windy数 数位dp
1026: [SCOI2009]windy数 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline ...
- 【BZOJ 1026】 [SCOI2009]windy数
Description windy定义了一种windy数.不含前导零且相邻两个数字之差至少为2的正整数被称为windy数. windy想知道,在A和B之间,包括A和B,总共有多少个windy数? In ...
- 1026: [SCOI2009]windy数 - BZOJ
Description windy定义了一种windy数.不含前导零且相邻两个数字之差至少为2的正整数被称为windy数. windy想知道,在A和B之间,包括A和B,总共有多少个windy数?Inp ...
- 【数位DP】bzoj1026: [SCOI2009]windy数
1026: [SCOI2009]windy数 Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 4163 Solved: 1864[Submit][Sta ...
- BZOJ 1026 windy数
Description windy定义了一种windy数.不含前导零且相邻两个数字之差至少为2的正整数被称为windy数. windy想知道,在A和B之间,包括A和B,总共有多少个windy数? In ...
- bzoj 1026 [SCOI2009]windy数(数位DP)
1026: [SCOI2009]windy数 Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 4550 Solved: 2039[Submit][Sta ...
随机推荐
- 原生js 数组的迭代的方法
一.原生js Array给我们提供很多了方法.方便我们操作数组.这些方法的参数,都需要传入一个匿名函数,匿名函数中有三个参数,分别含义是:数组中的项.该项的索引.以及数组本身. 1.filter方法: ...
- pacman详解及常见问题
安装软件包:软件包有很多可选依赖,是为软件提供额外功能, 安装软件时pacman 会输出可选依赖, 但不会在 pacman.log中,浏览安装软件的可选以来可用pacman -Si得到可选依赖的简短描 ...
- 【博客大赛】使用LM2677制作的3V至24V数控可调恒压源
[博客大赛]使用LM2677制作的3V至24V数控可调恒压源 http://bbs.ednchina.com/BLOG_ARTICLE_3013105.HTM LM2677,是TI公司生产的高效率 ...
- BZOJ1816 CQOI2010 扑克牌 贪心
题目传送门:https://www.lydsy.com/JudgeOnline/problem.php?id=1816 题意:有$N$堆牌,第$i$堆牌有$c_i$张牌,还有$M$张$joker$,每 ...
- .NET Core 3.0 跟踪
Preview1: https://blogs.msdn.microsoft.com/dotnet/2018/12/04/announcing-net-core-3-preview-1-and-ope ...
- BootStrap学习(3)_导航菜单
一.导航元素 1.表格导航或标签 以一个带有 class .nav 的无序列表开始. 添加 class .nav-tabs. <!DOCTYPE html> <html xmlns= ...
- sessionStorage和localStorage的区别
JS的本地保存localStorage.sessionStorage用法总结 localStorage.sessionStorage是Html5的特性,IE7以下浏览器不支持 为什么要掌握localS ...
- IOC框架之Ninject 简介
还是那几句话: 学无止境,精益求精 十年河东,十年河西,莫欺少年穷 学历代表你的过去,能力代表你的现在,学习代表你的将来 上篇博客介绍了依赖注入的三种方式:构造方法注入,属性注入,接口注入!详情请参考 ...
- 关于小程序登录时获取openId和unionId走过的坑
目前的项目是在做小程序这方面的,接触过的人应该都知道,同一个微信开放平台下的相同主体的App.公众号.小程序的unionid是相同的,这样就可以锁定是不是同一个用户.微信针对不同的用户在不同的应用下都 ...
- SAAS云平台搭建札记: (一) 浅论SAAS多租户自助云服务平台的产品、服务和订单
最近在做一个多租户的云SAAS软件自助服务平台,途中遇到很多问题,我会将一些心得.体会逐渐分享出来,和大家一起探讨.这是本系列的第一篇文章. 大家知道,要做一个全自助服务的SAAS云平台是比较复杂的, ...