题意:

windy定义了一种windy数。不含前导零且相邻两个数字之差至少为2的正整数被称为windy数。

windy想知道,在A和B之间,包括A和B,总共有多少个windy数?

数据范围  A,B≤100

题解:

很显然的一道数位dp

对于第i位是x的状态,可以由第i-1位是y的状态转移(满足x-y<=2)

求解答案时利用一般的思想,例如12345

先求1-10000,再求10000-12000 以此类推,但要求保证前几位满足x-y<=2的条件才继续

另外需注意前几个为0的情况,可以预处理统计出到当前位有前导0的数的个数

代码:

#include <bits/stdc++.h>
using namespace std;
#define ll long long
ll dp[][],dp2[];
char str[];
ll js(ll x)
{
if (x<) return(x);
sprintf(str,"%lld",x);
ll ans=,n=strlen(str)-;
for (ll i=;i<=n;i++)
{
ll tmp;
if (i==) tmp=-;else tmp=str[i-]-'';
ll en; if (i==n) en=str[i]-''; else en=str[i]-''-;
for (ll j=;j<=en;j++)
if (abs(j-tmp)>=) ans+=dp[n-i+][j];
if (i!= && abs(tmp-(str[i]-''))<) break;
}
ans+=dp2[n];
return(ans);
};
int main(){
freopen("noip.in","r",stdin);
freopen("noip.out","w",stdout);
ll n,m;
cin>>n>>m;
for (ll i=;i<=;i++) dp[][i]=;
dp2[]=;
for (ll i=;i<=;i++)
{
for (ll j=;j<=;j++)
for (ll k=;k<=;k++)
if (abs(j-k)>=) dp[i][j]+=dp[i-][k];
dp2[i]=dp2[i-];
for (ll k=;k<=;k++) dp2[i]+=dp[i][k];
}
cout<<js(m)-js(n-);
return();
}

bzoj1026的更多相关文章

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

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

  2. 【bzoj1026】 SCOI2009—windy数

    http://www.lydsy.com/JudgeOnline/problem.php?id=1026 (题目链接) 题意 在区间${[A,B]}$有多少个数相邻两个数位上的数之差至少为2. Sol ...

  3. BZOJ1026 SCOI2009 windy数 【数位DP】

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

  4. [BZOJ1026][SCOI2009]windy数 解题报告|数位dp

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

  5. bzoj1026数位dp

    基础的数位dp 但是ce了一发,(abs难道不是cmath里的吗?改成bits/stdc++.h就过了) #include <bits/stdc++.h> using namespace ...

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

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

  7. BZOJ1026: [SCOI2009]windy数

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

  8. 【分块打表】bzoj1026 [SCOI2009]windy数

    #include<cstdio> using namespace std; #define BN 380000 const int table[]={0,79595,158824,2021 ...

  9. 【BZOJ-1026】windy数 数位DP

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

  10. 数位DP bzoj1026

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

随机推荐

  1. 数据库中DQL、DML、DDL、DCL的概念与区别

    SQL(Structure Query Language)语言是数据库的核心语言. SQL语言共分为四大类:数据定义语言DDL,数据操纵语言DML,数据查询语言DQL,数据控制语言DCL. 1. 数据 ...

  2. C++ STL sort()函数用法

    C++STL提供的在里的排序函数,有以下两种形式 此外还提供有稳定排序版本stable_sort(),用法类似. 第一种形式: template <class RandomAccessItera ...

  3. 上传文件服务器与web内容服务分离

    现在难点在:     1\单击表单提交按钮后,图片上传到图片服务器,文字内容上传web服务器数据库,这两个服务器分别在两个城市.     2\图片不能通过web服务器中转.     3\web服务器内 ...

  4. Linq 中的 in 与 not in 的使用

    接 触 LINQ 也有很长的一段时间了,有些在 SQL 语句中用的很顺手的东西在 Linq 中却不知道如何实现了,最近遇到了一个问题,在 LINQ 的 Where 条件式中要如何使用 IN 与 NOT ...

  5. PMM安装-第一篇

    一 简介 今天来聊聊 PMM安装使用 二 安装 1 server端执行   curl -sSL https://get.daocloud.io/docker | sh    docker pull p ...

  6. mysql 查询优化 ~explain解读之select_type的解读

    一 简介:今天咱们来聊聊explain的select_type 二 类型 (1)SIMPLE 简单的SELECT语句(不包括UNION操作或子查询操作) (2)PRIMARY/UNION PRIMAR ...

  7. Linux CentOS 服务器搭建与初始化配置图文详解

    这几天对服务器兴趣贼为浓厚,在虚拟机上装了一个CentOS7玩了玩,遇到过很多问题,比如网卡驱动设置,不能ping 等等问题,然后掏钱买个ECS搭服务器玩玩,下面就开始谢谢我的心路历程吧. 首先 买服 ...

  8. oracle建包,函数demo

    create table BOOK ( BOOK_ID NUMBER(10), BOOK_NAME VARCHAR2(10) ); create or replace package chen_pac ...

  9. <crtdbg.h> 的作用

    1.在调试状态下让win程在输出窗口中显示调试信息,可以用_RPTn 宏n为显示参数比如_RPT0(_CRT_WARN,"text"); _RPT1(_CRT_WARN," ...

  10. malloc 函数详解【转】

    转自:https://www.cnblogs.com/Commence/p/5785912.html 很多学过C的人对malloc都不是很了解,知道使用malloc要加头文件,知道malloc是分配一 ...