1026: [SCOI2009]windy数

Time Limit: 1 Sec  Memory Limit: 162 MB
Submit: 6306  Solved: 2810
[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]的意思是 j 是首位的 i 位的数的这段区间里有多少windy数,例如 dp[2][5] 就是 50-59 内有多少 windy 数

有了这个 dp 数组后,就要开始解决问题了, 思路是借助DP数组慢慢逼近,所以,最后的值会是 1 --  n-1 中的 windy 数,所以看情况加1

 #include<stdio.h>
#include<math.h>
#include<stdlib.h>
#include<string.h> int dp[][]; void Init()
{
memset(dp,,sizeof(dp));
int i,j,k;
for (i=;i<;i++)
dp[][i]=; for (i=;i<=;i++)
{
for (j=;j<;j++)
{
for (k=;k<;k++)
if (abs(j-k)>=)
dp[i][j]+=dp[i-][k];
}
}
} int slove(int x)
{
int len=;
int w[];
while (x)
{
w[++len]=x%;
x/=;
}
w[len+]=;
int ans=;
int i,j;
for (i=;i<len;i++)
for (j=;j<;j++)
ans+=dp[i][j]; for (i=;i<w[len];i++)
ans+=dp[len][i]; for (i=len-;i;i--)
{
for (j=;j<w[i];j++)
{
if (abs(w[i+]-j)>=)
ans+=dp[i][j];
}
if (abs(w[i+]-w[i])<)
break;
}
return ans;
} int main()
{
Init();
int l,r;
while (scanf("%d%d",&l,&r)!=EOF)
{
printf("%d\n",slove(r+)-slove(l));
}
return ;
}

windy数(简单数位DP)的更多相关文章

  1. BZOJ_1026_[SCOI2009]windy数_数位DP

    BZOJ_1026_[SCOI2009]windy数_数位DP 题意:windy定义了一种windy数.不含前导零且相邻两个数字之差至少为2的正整数被称为windy数. windy想知道, 在A和B之 ...

  2. [bzoj 1026]windy数(数位DP)

    题目:http://www.lydsy.com/JudgeOnline/problem.php?id=1026 分析: 简单的数位DP啦 f[i][j]表示数字有i位,最高位的数值为j的windy数总 ...

  3. bzoj 1026 [SCOI2009]windy数(数位DP)

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

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

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

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

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

  6. 洛谷P2657 windy数 [SCOI2009] 数位dp

    正解:数位dp 解题报告: 传送门! 这题一看就是个数位dp鸭,"不含前导零且相邻两个数字之差至少为2"这种的 然后就直接套板子鸭(板子戳总结,懒得放链接辣QAQ 然后就是套路 然 ...

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

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

  8. 1026. [SCOI2009]windy数【数位DP】

    Description windy定义了一种windy数.不含前导零且相邻两个数字之差至少为2的正整数被称为windy数. windy想知道, 在A和B之间,包括A和B,总共有多少个windy数? I ...

  9. BZOJ 1026 windy数【数位DP】

    1026: [SCOI2009]windy数 Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 10142  Solved: 4712[Submit][St ...

随机推荐

  1. iOS:新浪微博OAuth认证

    新浪微博OAuth认证   1.资源的授权 •在互联网行业,比如腾讯.新浪,那用户人群是非常巨大的 •有时候要把某些用户资源共享出去,比如第三方想访问用户的QQ数据.第三方想访问用户的新浪微博数据 • ...

  2. gamma校正原理

    http://blog.csdn.net/u013286409/article/details/50239377 目录(?)[-]   图2中左图为原图,中图为gamma = 1/2.2在校正结果,原 ...

  3. 智能选择器和语义化的CSS

    本文由白牙根据Heydon Pickering的<Semantic CSS With Intelligent Selectors>所译,整个译文带有我自己的理解与思想,如果译得不好或不对之 ...

  4. C++Singleton的DCLP(双重锁)实现以及性能测评

      本文系原创,转载请注明:http://www.cnblogs.com/inevermore/p/4014577.html   根据维基百科,对单例模式的描述是: 确保一个类只有一个实例,并提供对该 ...

  5. Linux vim命令记录

    Ndd  :删除N行 多行删除 :1,10d ctrl+v ,移动光标,ctrl+i,输入#,esc :移动处均会输入# gg:文档头 G:文档尾 o:下一行,并进入insert模式 O:上一行并输入 ...

  6. Mysql:使用workbeanch导出数据库

    MySQL Workbench导出数据库   步骤: 1. 打开mysql workbench,进入需要导出的数据库,点击左侧栏的[Management]tab键. 2. 点选要输出的数据库 点击[D ...

  7. vs无法引用项目问题

    vs无法引用项目问题 2017年12月13日 14:45:31 阅读数:582 开发时编译报错--项目A未被引用,展开项目的引用,发现该项目实质已经被引用了,但是该引用上有个黄色三角感叹号,遂移除该引 ...

  8. android端StarIO热敏打印机打印小票

    最近在做这个热敏打印机打印小票,开始的时候在网上找资料,发现国内基本没有这方面的资料,国外也很少,在此做个打印小票的记录. 这里只记录一些关键点. 使用StarIOPort.searchPrinter ...

  9. mariadb在线热备份做主从

    yum install http://www.percona.com/downloads/percona-release/redhat/0.1-3/percona-release-0.1-3.noar ...

  10. java web 通配符* ? $1 $2 $3

    匹配通配符 * 匹配0-n个字符,但不包括“/”.即,“*”只匹配一级目录或文件中的零个或多个字符. ** 匹配0-n个字符,包括“/”.即,“**”匹配多级目录或文件. ? 匹配0-1个字符,但不包 ...