这题没考虑到前导0,就是不知道哪wa了,又补题一直wa,scanf和printf改成cin cout就对了 真不知道错在哪了。。。刚刚又试了一下,G++scanf过不了 但是visual C++可以。真服了,浪费我又一个多小时。
这道题是简单的数位dp!!!注意前导0!前导0!前导0!掉坑的地方说三遍,顺便庆祝下因为前导0,成功爆0。
思路:就是数位dp模板题,不过置前导0的时候要注意技巧,就是num要放9。为什么放9呢?因为放9不会限制后面取数。暂且这么记吧,我真没整明白为啥放9呜呜呜。
下面是AC代码!一定要掌握前导0的处理!

#include<cstdio>
#include<iostream>
#include<cstring>
#include<cmath>
#include<algorithm>
#define ll long long
#define maxn 20
using namespace std;//这题注意前导0!!!
int dig[maxn];
ll dp[maxn][maxn][2];ll dfs(int pos,int num,int odd,int pre0,int limit){if(!pos) return 1;if(!limit&&dp[pos][num][odd]!=-1) return dp[pos][num][odd];int up=limit?dig[pos]:9;ll ans=0;for(int i=0;i<=up;i++){if(pre0==0&&i==0) ans+=dfs(pos-1,9,0,0,limit&&i==up);else {if(!odd&&i<=num) ans+=dfs(pos-1,i,!odd,pre0||i,limit&&i==up); else if(odd&&i>=num) ans+=dfs(pos-1,i,!odd,pre0||i,limit&&i==up);}}if(!limit) dp[pos][num][odd]=ans;return ans;
}
ll solve(ll n){int pos=0;while(n){dig[++pos]=n%10;n/=10;}return dfs(pos,9,0,0,1);
}
int main(){int T;cin>>T;memset(dp,-1,sizeof(dp));while(T--){ll l,r;cin>>l>>r;cout<<solve(r)-solve(l-1)<<endl;}return 0;
}

One integer number x is called “Mountain Number” if:

(1) x>0 and x is an integer;

(2) Assume x=a[0]a[1]…a[len-2]a[len-1](0≤a[i]≤9, a[0] is positive). Any a[2i+1] is larger or equal to a[2i] and a[2i+2](if exists).

For example, 111, 132, 893, 7 are “Mountain Number” while 123, 10, 76889 are not “Mountain Number”.

Now you are given L and R, how many “Mountain Number” can be found between L and R (inclusive) ?

Input
The first line of the input contains an integer T (T≤100), indicating the number of test cases.

Then T cases, for any case, only two integers L and R (1≤L≤R≤1,000,000,000).

Output
For each test case, output the number of “Mountain Number” between L and R in a single line.
Sample Input
3
1 10
1 100
1 1000
Sample Output
9
54
384

FZU2109 数位dp 含前导零相关推荐

  1. Round Numbers POJ - 3252(数位dp+判断前导零)

    题意 求二进制表示中0的个数大于1的数的个数. 题目 The cows, as you know, have no fingers or thumbs and thus are unable to p ...

  2. windy定义了一种windy数,不含前导零且前两个数字只差至少为2的正整数被称为windy数,求A和B之间windy数的个数

    windy数(java) 输入1 10 输出 9 输入25 50 输出 20 dp[i][j] 表示第i位的数为j 那么 dp[i][j]=dp[i-1][k] abs(j-k)>=2 初始值 ...

  3. Mountain Number FZU-2109数位dp

    Mountain NumberFZU-2109 题目大意:一个大于0的数字x,分写成x=a[0]a[1]a[2][3]..a[n]的形式,(比如x=1234,a[0]=1,a[1]=2,a[3]=3, ...

  4. 数位dp 的简单入门

    时间紧张,就不讲那么详细了. 之前一直被深搜代码误解,以为数位dp 其实就是记忆化深搜...(虽说爆搜确实很舒服而且还好想) 但是后来发现数位dp 的标准格式其实是 预处理 + dp ...... 数 ...

  5. uestc 250 windy数(数位dp)

    题意:不含前导零且相邻两个数字之差至少为2的正整数被称为windy数. windy想知道,在A和B之间,包括A和B,总共有多少个windy数? 思路:数位dp #include<iostream ...

  6. 【bzoj1026】[SCOI2009]windy数 数位dp

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

  7. CodeForces - 628D Magic Numbers(数位dp)

    题目链接:点击查看 题目大意:首先规定一个不含前导零的数字如果满足: 从最高位开始,偶数位置全为 ddd 从最高位开始,奇数位置不能出现 ddd 则称该数字为 d−magicd-magicd−magi ...

  8. 数位dp从会打模板到不会打模板

    打了几个数位$dp$,发现自己除了会打模板之外没有任何长进,遇到非模板题依然什么都不会 那么接下来这篇文章将介绍如何打模板(滑稽) 假设我们要处理$l----r$ 采用记忆化搜索的方式,枚举$< ...

  9. AcWing1083. Windy数(数位DP)题解

    题目传送门 题目描述 Windy 定义了一种 Windy 数:不含前导零且相邻两个数字之差至少为 2 的正整数被称为 Windy 数. Windy 想知道,在 A 和 B 之间,包括 A 和 B,总共 ...

最新文章

  1. 【Java 网络编程】UDP 简介
  2. 征战蓝桥 —— 2016年第七届 —— C/C++A组第8题——四平方和
  3. 数据库:MySQL、HBase、ElasticSearch三者对比
  4. 因为arc的命名规则而产生的一些错误
  5. Sequelize-nodejs-5-Querying
  6. 关于胶质母细胞瘤的影像组学和影像基因组学
  7. python编程实现语音数据分帧及分帧还原
  8. 欧姆龙服务器显示oE,欧姆龙OPC服务器(OMRON OPC Server) v1.0免费版
  9. 强烈推荐 20 个免费和开源数据可视化工具
  10. 文件外链PHP,php如何去除外链
  11. mysql.tar.xz怎么安装_.tar.xz文件的解压
  12. 北航、商汤、UCSD 提出首个点云二值网络 BiPointNet(ICLR2021)
  13. Hadoop数据迁移工具DistCp
  14. VIVO NEX3高层预热,差0.4到100%屏占比,这得让多少人心动
  15. windows10系统-12-WPS文档编辑排版
  16. Selenium PO模式实现
  17. 节日贺卡python制作
  18. 衣橱管理APP——《衣橱管家》立项书(产品分析
  19. 天干地支算年份的C语言算法,天干地支对照表及算法
  20. 已阻止跨源请求:同源策略禁止读取位于

热门文章

  1. Linux基础_软件包管理
  2. java rsi_高频交易算法研发心得--RSI指标及应用
  3. 布丁浅谈之Linux常用基本命令
  4. Weir:原生 TiDB 支持的数据库中间件
  5. 豆酱踩坑(二)——pytorch Dataset中的__len__()函数
  6. 共建通往天堂的巴别塔
  7. h5画布动画_使用HTML5画布制作动画的漫画面板
  8. Ros 全局规划使用carrot_planner/CarrotPlanner和global_planner/GlobalPlanner
  9. VC++ Opensll RSA分段加密
  10. 孤岛惊魂3闪退win10win11下运行办法