题意:

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. toFixed方法的bug

    最近在工作过程中碰到一个隐藏的bug,经调试发现竟然是toFixed函数不可靠的结果引起的.后端同学在处理价格比较的时候,用foFixed进行价格的四舍五入之后,竟然发现比较的结果有问题: 大家都知道 ...

  2. DHCP服务洪水攻击

    1.攻击原理 动态主机设置协议是一个局域网的网络协议,使用UDP协议工作,主要有两个用途: 为内部网络或网络服务供应商自动分配IP地址给用户,以作为内部网络管理员对所有计算机做中央管理的手段. 在正常 ...

  3. 20155215 2016-2017-2 《Java程序设计》第9周学习总结

    20155215 2016-2017-2 <Java程序设计>第9周学习总结 教材学习内容总结 第十六章 JDBC入门 - JDBC(Java DataBase Connectivity) ...

  4. js scroll函数

    $(function () { $(".sticky").hide(); var top = $(window).scrollTop(); if (top >= 100) { ...

  5. luogu P4342 [IOI1998]Polygon

    IOI早期这么多dp? 题目要求断掉环上的一边,我们可以断环为链,开两倍数组 容易想到dp,设\(f_{i,j}\)为区间\([i,j]\)的最大值,然后就是个枚举断点的区间dp 不过可能会有负数出现 ...

  6. 第19月第8天 斯坦福大学公开课机器学习 (吴恩达 Andrew Ng)

    1.斯坦福大学公开课机器学习 (吴恩达 Andrew Ng) http://open.163.com/special/opencourse/machinelearning.html 笔记 http:/ ...

  7. NOIP2016 D2-T3 愤怒的小鸟

    看了题解之后知道,是状压dp. 一.首先预处理一个$2^n$次方的fpow[]数组 fpow[]=; ;i<=;i++)fpow[i]=(fpow[i-]<<); 二.然后预处理一个 ...

  8. json转对象-对象转json

    我们经常会用到json,所以在c#里就会经常有对象or对象数组转json,json转对象or对象数组. ps:对象或者json可能是{}or[],也就是json属性or json数组形式,或者json ...

  9. mysql 8.0 ~ 安装

    1 环境配置   wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.13-linux-glibc2.12-x86_64.tar. ...

  10. Dom4j向XML中增加节点与属性——(四)

    先获取到节点,然后在节点山添加Element 添加节点 添加属性 设置开始标签与结束标签的值book.addElement("描述").addAttribute("nam ...