http://www.lydsy.com/JudgeOnline/problem.php?id=1026

数位DP

如果前一位填的是0,

0是前导0,下一位可以随便填

0不是前导0,下一位不能填1

为避免这种情况

枚举位数,强制不出现前导0

#include<cstdio>
#include<cstring>
#include<algorithm> using namespace std; int dp[][]; int a[]; int LEN; int dfs(int dep,int num,bool lim)
{
if(!lim && dp[dep][num]!=-) return dp[dep][num];
if(!dep) return ;
int up= lim ? a[dep] : ,tmp=;
for(int i=;i<=up;++i)
{
if(dep==LEN && !i) continue;
if(abs(i-num)<) continue;
tmp+=dfs(dep-,i,lim && i==up);
}
if(!lim) dp[dep][num]=tmp;
return tmp;
} int solve(int n)
{
if(!n) return ;
int len=;
while(n)
{
a[++len]=n%;
n/=;
}
int sum=;
for(int i=;i<len;++i)
{
LEN=i;
sum+=dfs(i,,);
}
LEN=len;
sum+=dfs(len,,);
return sum;
} int main()
{
int a,b;
scanf("%d%d",&a,&b);
memset(dp,-,sizeof(dp));
printf("%d\n",solve(b)-solve(a-));
}

或者是记录有无前导零这个状态

#include<cstdio>
#include<cstring>
#include<algorithm> using namespace std; int dp[][][]; int a[]; int LEN; int dfs(int dep,int num,bool lim,bool zero)
{
if(!lim && dp[dep][num][zero]!=-) return dp[dep][num][zero];
if(!dep) return !zero;
int up= lim ? a[dep] : ,tmp=;
for(int i=;i<=up;++i)
{
if(abs(i-num)< && !zero) continue;
tmp+=dfs(dep-,i,lim && i==up,zero && !i);
}
if(!lim) dp[dep][num][zero]=tmp;
return tmp;
} int solve(int n)
{
if(!n) return ;
int len=;
while(n)
{
a[++len]=n%;
n/=;
}
return dfs(len,,,);
} int main()
{
int a,b;
scanf("%d%d",&a,&b);
memset(dp,-,sizeof(dp));
printf("%d\n",solve(b)-solve(a-));
}

1026: [SCOI2009]windy数

Time Limit: 1 Sec  Memory Limit: 162 MB
Submit: 8771  Solved: 3959
[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 。

bzoj千题计划117:bzoj1026: [SCOI2009]windy数的更多相关文章

  1. BZOJ1026 SCOI2009 windy数 【数位DP】

    BZOJ1026 SCOI2009 windy数 Description windy定义了一种windy数.不含前导零且相邻两个数字之差至少为2的正整数被称为windy数. windy想知道,在A和B ...

  2. bzoj1026: [SCOI2009]windy数(数位dp)

    1026: [SCOI2009]windy数 Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 8203  Solved: 3687[Submit][Sta ...

  3. 2018.06.30 BZOJ1026: [SCOI2009]windy数(数位dp)

    1026: [SCOI2009]windy数 Time Limit: 1 Sec Memory Limit: 162 MB Description windy定义了一种windy数.不含前导零且相邻两 ...

  4. bzoj1026: [SCOI2009]windy数(传说你是数位DP)

    1026: [SCOI2009]windy数 题目:传送门 题解: 其实之前年少无知的时候好像A过...表示当时并不知道什么数位DP 今天回来深造一发... 其实如果对这个算法稍有了解...看到这题的 ...

  5. BZOJ1026: [SCOI2009]windy数[数位DP]

    1026: [SCOI2009]windy数 Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 6346  Solved: 2831[Submit][Sta ...

  6. 【数位DP】bzoj1026: [SCOI2009]windy数

    1026: [SCOI2009]windy数 Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 4163  Solved: 1864[Submit][Sta ...

  7. bzoj千题计划300:bzoj4823: [Cqoi2017]老C的方块

    http://www.lydsy.com/JudgeOnline/problem.php?id=4823 讨厌的形状就是四联通图 且左右各连一个方块 那么破坏所有满足条件的四联通就好了 按上图方式染色 ...

  8. BZOJ1026: [SCOI2009]windy数

    传送门 md直接wa了78次,身败名裂 没学过数位DP硬搞了一道数位DP的模板题,感觉非常的愉(sha)悦(cha). 二分转化枚举思想.首先DP预处理出来$f[i][j]$表示有$i$位且第$i$位 ...

  9. [bzoj1026][SCOI2009]windy数_数位dp

    windy数 bzoj-1026 题目大意:求一段区间中的windy数个数. 注释:如果一个数任意相邻两位的差的绝对值都不小于2,这个数就是windy数,没有前导0.$区间边界<=2\cdot ...

随机推荐

  1. HDU 1170 Shopping Offers 离散+状态压缩+完全背包

    题目链接: http://poj.org/problem?id=1170 Shopping Offers Time Limit: 1000MSMemory Limit: 10000K 问题描述 In ...

  2. Android笔记-3-EditText的属性介绍

    [Android 基础]EditText的属性介绍 EditText继承TextView,所以EditText具有TextView的属性特点,下面主要介绍一些EditText的特有的输入法的属性特点 ...

  3. Teamwork(The first day of the team)

    今天是第一次的小组讨论,我们主要是分析了我们的大概方向及大概功能及相应的分工.其实具体也还没有确定下来,只是大概的说了一下,确定了master为杨灵超同学.下面用图片记录我们这一天的工作内容(杨灵超V ...

  4. 【贪心算法】POJ-2376 区间问题

    一.题目 Description Farmer John is assigning some of his N (1 <= N <= 25,000) cows to do some cle ...

  5. angularJS1笔记-(18)-$http及用angular实现JSONP跨域访问过程

    官网上的解释为: The $http service is a core AngularJS service that facilitates communication with the remot ...

  6. 软工网络15团队作业4——敏捷冲刺日志的集合贴(Alpha阶段)

    Alpha阶段 第 1 篇 Scrum 冲刺博客 第 2 篇 Scrum 冲刺博客 第 3 篇 Scrum 冲刺博客 第 4 篇 Scrum 冲刺博客 第 5 篇 Scrum 冲刺博客 第 6 篇 S ...

  7. php in_array()优化

    开年首篇文章,后天上班了,正在调整状态.年前室友问我一段程序效率问题,刚好来研究下!该函数是关于判断域名字符串是否是单拼域名.双拼域名.三拼域名...多拼域名问题: //原始程序function pi ...

  8. ASP.NET MVC 模型绑定

    模型绑定指的是MVC从浏览器发送的HTTP请求中为我们创建.NET对象,在HTTP请求和C#间起着桥梁的作用.模型绑定的一个最简单的例子是带参数的控制器action方法,比如我们注册这样的路径映射: ...

  9. Nginx - request_time和upstream_response_time的区别

    request_time 官网描述:request processing time in seconds with a milliseconds resolution; time elapsed be ...

  10. phpredis用法笔记

    项目中用到redis集群, 发现phpredis对集群,分布式是有支持的.翻译下相关资料备用. redis扩展地址:https://github.com/phpredis/phpredis, 看到如下 ...