问题: windy数

时间限制: 1 Sec  内存限制: 512 MB

题面


题目描述

Windy 定义了一种 Windy 数:不含前导零且相邻两个数字之差至少为

的正整数被称为 Windy 数。

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

输入格式

一行两个数,分别为 A,B 。

输出格式

输出一个整数,表示答案。

样例输入

1 10

样例输出

9

题解


我的数位dp入门题,嗯,其实挺easy的。

设f[i][j]表示填了i位数,最高位是j的windy数的个数。

于是不考虑神特么的先导0问题单考虑一下临位差距至少为2的问题直接大力dp算出所有的值。

然后再来一遍大力dp,j从1-9循环累加答案就可以了。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#define int long long
#define rint register int
#define ll long long
using namespace std;
int f[][]={},a,b;
ll pw[];
void prework()
{
pw[]=;
for(rint i=;i<=;++i)pw[i]=pw[i-]*;
for(rint i=;i<=;++i)f[][i]=;
for(rint i=;i<=;++i)//枚举数位
for(rint j=;j<=;++j)//枚举最高位
for(rint k=;k<=;++k)//枚举上一个状态的最高位,本状态的次高位
if(abs(j-k)>=)f[i][j]+=f[i-][k];
}
int count(int x)
{
int w=,y,ans=,pre;
while(pw[w]<=x)++w;//求位数
for(rint i=;i<w;++i)//枚举位数
for(rint j=;j<=;++j)//枚举最高位
ans+=f[i][j];
y=x/pw[w-];
for(rint i=;i<y;++i)ans+=f[w][i];
pre=y;
x%=pw[w-];
for(rint i=w-;i>=;--i)
{
y=x/pw[i-];
for(rint j=;j<y;++j)
if(abs(j-pre)>=)
ans+=f[i][j];
if(abs(pre-y)<)break;
pre=y;
x%=pw[i-];
}
return ans;
}
signed main()
{
scanf("%lld %lld",&a,&b);
prework();
cout<<count(b+)-count(a)<<endl;
return ;
}

「题解」:windy数的更多相关文章

  1. 「SCOI2009」windy数

    传送门 Luogu 解题思路 数位 \(\text{DP}\) 设状态 \(dp[now][las][0/1][0/1]\) 表示当前 \(\text{DP}\) 到第 \(i\) 位,前一个数是 \ ...

  2. 「CQOI2015」选数

    「CQOI2015」选数 题目描述 我们知道,从区间[L,H](L和H为整数)中选取N个整数,总共有(H-L+1)^N种方案.小z很好奇这样选出的数的最大公约数的规律,他决定对每种方案选出的N个整数都 ...

  3. 「FJOI2016」神秘数 解题报告

    「FJOI2016」神秘数 这题不sb,我挺sb的... 我连不带区间的都不会哇 考虑给你一个整数集,如何求这个神秘数 这有点像一个01背包,复杂度和值域有关.但是你发现01背包可以求出更多的东西,就 ...

  4. LibreOJ2095 - 「CQOI2015」选数

    Portal Description 给出\(n,k,L,R(\leq10^9)\),求从\([L,R]\)中选出\(n\)个可相同有顺序的数使得其gcd为\(k\)的方案数. Solution 记\ ...

  5. 【LOJ】#3094. 「BJOI2019」删数

    LOJ#3094. 「BJOI2019」删数 之前做atcoder做到过这个结论结果我忘了... em,就是\([1,n]\)之间每个数\(i\),然后\([i - cnt[i] + 1,i]\)可以 ...

  6. 「BZOJ3505」[CQOI2014] 数三角形

    「BZOJ3505」[CQOI2014] 数三角形 这道题直接求不好做,考虑容斥,首先选出3个点不考虑是否合法的方案数为$C_{(n+1)*(m+1)}^{3}$,然后减去三点一线的个数就好了.显然不 ...

  7. 「题解」「美团 CodeM 资格赛」跳格子

    目录 「题解」「美团 CodeM 资格赛」跳格子 题目描述 考场思路 思路分析及正解代码 「题解」「美团 CodeM 资格赛」跳格子 今天真的考自闭了... \(T1\) 花了 \(2h\) 都没有搞 ...

  8. 「题解」「HNOI2013」切糕

    文章目录 「题解」「HNOI2013」切糕 题目描述 思路分析及代码 题目分析 题解及代码 「题解」「HNOI2013」切糕 题目描述 点这里 思路分析及代码 题目分析 这道题的题目可以说得上是史上最 ...

  9. 「题解」JOIOI 王国

    「题解」JOIOI 王国 题目描述 考场思考 正解 题目描述 点这里 考场思考 因为时间不太够了,直接一上来就着手暴力.但是本人太菜,居然暴力爆 000 ,然后当场自闭- 一气之下,发现对 60pts ...

随机推荐

  1. PAT_A1079#Total Sales of Supply Chain

    Source: PAT A1079 Total Sales of Supply Chain (25 分) Description: A supply chain is a network of ret ...

  2. MySQL数据库中,将一个字段的值分割成多条数据显示

    本文主要记录如何在MySQL数据库中,将一个字符串分割成多条数据显示. 外键有时是以字符串的形式存储,例如 12,13,14 这种,如果以这种形式存储,则不能直接与其他表关联查询,此时就需要将该字段的 ...

  3. Mybatis与Spring整合(CURD)

    项目采用Maven构建,用Junit进行测试,数据库是Mysql,连接池是c3p0,未测试缓存部分 1.Maven的“pom.xml”文件 <project xmlns="http:/ ...

  4. shell 命令 查找命令find,grep

    1.find 查找文件 [ find -name 文件名 ] 在当前目录及子目录中找这个文件 [ find -iname 文件名 ] 在当前目录及子目录中找这个文件,不区分大小写 [ find -na ...

  5. ionic 滚动条 ion-scroll 用于创建一个可滚动的容器

    ionic 滚动条 ion-scroll ion-scroll 用于创建一个可滚动的容器. 用法 <ion-scroll [delegate-handle=""] [dire ...

  6. PokerNet-poker recognition: 扑克识别 (6)

    文章目录 准备 最终结果 未来改进 准备 机器: Titan XP 12GB, 64GB RAM, 机器非常强,可靠. 下次有机会购买RTX 2080 Ti 试试 最终结果 错误率可以达到万分之一,非 ...

  7. 【模板篇】A* 寻路算法

    上次在做k短路的时候说到了A*, 但是并没有仔细的研究A*寻路, 毕竟k短路中的A*也不怎么标准… A*寻路的过程网上还是有很多的, 讲得也很清楚, 不妨跟着里面的图示自己动手操作一下, 基本一遍就能 ...

  8. python的异常捕捉

    你可能会说既然有万能异常Exception,那么我直接用上面的这种形式就好了,其他异常可以忽略 你说的没错,但是应该分两种情况去看 1.如果你想要的效果是,无论出现什么异常,我们统一丢弃,或者使用同一 ...

  9. [JZOJ3691] 【CF414E】Mashmokh's Designed tree

    题目 题目大意 给你一棵树,接下来对这棵树进行三种操作: 1.询问两点之间的距离. 2.让某个点变为它原来的第\(h\)个祖先的最后一个儿子. 3.求\(dfs\)序中最后一个深度为\(k\)的点. ...

  10. curl 一个使用例子

    #include <iostream> #define Main main #include <string> #include <assert.h> #inclu ...