一本通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 ...
随机推荐
- Spring对JSON请求加解密
Spring中处理JSON请求通常使用@RequestBody和@ResponseBody注解,针对JSON请求加解密和过滤字符串,Spring提供了RequestBodyAdvice和Respons ...
- Omi框架学习之旅 - 组件 及原理说明
hello world demo看完后其实基本的写法就会了. 但是omi中的组件是神马鬼?其实我也不知道组件是啥. 百度百科是这么说的: 是对数据和方法的简单封装.es6中,一个类其实也可以做到对方法 ...
- helm 部署 使用 记录
0.概念:Helm作为一个包管理工具, 它把Kubernetes资源(比如deployments.services或 ingress等) 打包到一个chart中,方便我们将其chart保存到chart ...
- HiKey软硬件开发环境及其调试
HiKey是一款搭载华为海思麒麟620芯片,符合Linaro 96Boards标准的SBC开发板.它采用8核64位Cortex-A53处理器,主频高达1.2GHz. HiKey作为AOSP支持的一款产 ...
- java JDK安装教程
JAVA_HOME G:\JDK\java7\jdk1.7.0_80 根据自己的哈 ;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin 然后找到CLASSPATH ...
- Android Studio 导入工程
最简单的方式 等待加载完就好了 第二种方式 在导入别人的android studio项目(假设为项目A)时,会遇到gradle不一致的情况,以下简短介绍解决方法: 1. 打开要导入的项目的目录,删除下 ...
- WPF 模拟UI 键盘录入
原文:WPF 模拟UI 键盘录入 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/yangyisen0713/article/details/1835 ...
- WPF 任务栏背景闪烁提醒
原文:WPF 任务栏图标闪烁提醒 public static class FlashWindow { [DllImport("user32.dll")] [return: Ma ...
- 商场促销-策略模式(和简单工厂模式很像的哇) C#
还是那几句话: 学无止境,精益求精 十年河东,十年河西,莫欺少年穷 学历代表你的过去,能力代表你的现在,学习代表你的将来 废话不多说,直接进入正题: 首先按照大话设计模式的解释,在这里也总结下策略模式 ...
- 11.10 (下午)开课二个月零六天(ajax验证用户名,ajax调数据库)
用ajax验证用户名是否可用 testuid.php <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN&quo ...