【HDU 2089】不要62
http://acm.hdu.edu.cn/showproblem.php?pid=2089
数位dp,参照了打野的博客
预处理出f数组,f[i][j]表示第i位为数字j时的可行的数字总数。
对于区间[l,r],可以用区间[1,r]-[1,l)求得。
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int in() {
int k = 0, fh = 1; char c = getchar();
for(; c < '0' || c > '9'; c = getchar())
if (c == '-') fh = -1;
for(; c >= '0' && c <= '9'; c = getchar())
k = (k << 3) + (k << 1) + c - '0';
return k * fh;
} int f[8][10], digit[10], len; int cal(int num) {
len = 0;
while (num) {digit[++len] = num % 10; num /= 10;}
digit[len + 1] = 0;
int ret = 0;
for(int i = len; i >= 1; --i) {
for(int j = 0; j < digit[i]; ++j)
if (j != 4 && !(digit[i + 1] == 6 && j == 2))
ret += f[i][j];
if (digit[i] == 4 || (digit[i + 1] == 6 && digit[i] == 2))
break;
}
return ret;
} int main() {
f[0][0] = 1;
for(int i = 1; i <= 7; ++i)
for(int j = 0; j <= 9; ++j)
if (j != 4)
for(int k = 0; k <= 9; ++k)
if (k != 4 && !(j == 6 && k == 2))
f[i][j] += f[i - 1][k]; int n, m;
n = in(); m = in(); if (n > m) swap(n, m);
while (n != 0 && m != 0) {
printf("%d\n", cal(m + 1) - cal(n));
n = in(); m = in(); if (n > m) swap(n, m);
}
return 0;
}
现在才学数位dp,←noip滚粗的前兆_(:з」∠)_
【HDU 2089】不要62的更多相关文章
- Hdu 2089 不要62 (数位dp入门题目)
题目链接: Hdu 2089 不要62 题目描述: 给一个区间 [L, R] ,问区间内不含有4和62的数字有多少个? 解题思路: 以前也做过这个题目,但是空间复杂度是n.如果数据范围太大就GG了.今 ...
- hdu 2089 不要62【数位dp】
HDU 2089 求给定区间内不含62和4的数的个数. 数位dp入门.从这里我清楚了一些数位dp的用法.比如limit是判断是否达到上界,而且需要判断(!limit)..比如若题目要求不含11的个数, ...
- hdu 2089 不要62(初学数位DP)
http://acm.hdu.edu.cn/showproblem.php?pid=2089 题意: 给定 m,.n; 求车牌号 m~n之间 有多少数字 不含 4或62 ,8652是可以的 . ...
- 数位DP HDU - 2089 不要62
不要62 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
- HDU 2089 - 不要62 - [数位DP][入门题]
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2089 Time Limit: 1000/1000 MS (Java/Others) Memory Li ...
- HDU 2089 不要62(数位dp模板题)
http://acm.hdu.edu.cn/showproblem.php?pid=2089 题意:求区间内不包含4和连续62的数的个数. 思路: 简单的数位dp模板题.给大家推荐一个好的讲解博客.h ...
- [hdu 2089] 不要62 数位dp|dfs 入门
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2089 题意:求[n, m]区间内不含4和62的数字个数. 这题有两种思路,直接数位dp和dfs 数位d ...
- HDU 2089 不要62:数位dp
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2089 题意: 问你在区间[n,m]中,有多少个数字不含"4"且不含"62 ...
- HDU 2089 不要62 数位DP模板题
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2089 参考博客:https://www.cnblogs.com/HDUjackyan/p/914215 ...
- HDU 2089 不要62 | 暴力(其实是个DP)
题目: http://acm.hdu.edu.cn/showproblem.php?pid=2089 题解: 暴力水过 #include<cstdio> #include<algor ...
随机推荐
- jmeter的压力测试
Apache JMeter是Apache组织开发的基于Java的压力测试工具.用于对软件做压力测试. 以下为压力测试的简单介绍 1.在测试计划下增加一个线程组 2.线程组的内容需要进行编辑,根据压力测 ...
- UBUNTU添加新的分辨率
首先,直接运行xrandr查看下分辨率的情况: $ xrandr Screen 0: minimum 320 x 200, current 1280 x 1024, maximum 4096 x 40 ...
- 学习ROS的基本知识,节点、话题、服务等
之前我在电脑上安装的ROS版本为jade版的. 可是后来发现各个教程安装的是indigo版的 于是我又去看了看ROS官网,在官网上有这样的一句话. 而且又因为indigo版的资料多一些,于是我就换了r ...
- ubuntu14安装Qt
首先下载Qt源码 https://download.qt.io/archive/qt/4.8/4.8.4/ 这里我下载的是qt-everywhere-opensource-src-4.8.4.tar. ...
- 解决为什么每次打开Eclipse新的workspace需要更新nexus-maven-repository-index问题
解决为什么每次打开Eclipse新的workspace需要更新nexus-maven-repository-index问题 新建一个Eclipse的workspace. 打开Window—>Pr ...
- noip模拟赛(一)宠物之战
宠物之战 (senso.pas/c/cpp) [问题描述] 众所周知,moreD的宠物已经被moreD奴役得体无完肤.这只宠物实在忍无可忍,把自己每天走魔法树的经历告诉了自己的宠物.同时他还说明了自己 ...
- FFT入门
这篇文章会讲讲FFT的原理和代码. 先贴picks博客(又名FFT从入门到精通):http://picks.logdown.com/posts/177631-fast-fourier-transfor ...
- Win10添加简体中文美式键盘的方法
在Win10中很多朋友发现没有简体中文(美式键盘)的选项,而如果使用“英语-美式键盘”作为默认输入法,有ModernApp的界面会变成英文,这十分不方便,那么有没有方可以在Win10中添加一个 简体中 ...
- eclipse/intellij idea 远程调试hadoop 2.6.0
很多hadoop初学者估计都我一样,由于没有足够的机器资源,只能在虚拟机里弄一个linux安装hadoop的伪分布,然后在host机上win7里使用eclipse或Intellj idea来写代码测试 ...
- Hibernate3.3.2 手动配置annotation环境
简单记录Hibernate3.3.2如何快速配置环境 一.下载hibernate-distribution-3.3.2.GA-dist.zip文件,建立User libraries. 打开window ...