HDU-2089不要62-暴力或数位DP入门
不要62
题意:给定区间,求在这个区间中有多少个数字,不包含4且不包含62;
这道题作为数位DP的入门题;
暴力也是可以过
#include<cstdio>
#include <iostream>
#include <cstring>
#include <string>
#include <algorithm>
using namespace std; const int maxn =1e6+;
int a[maxn];
bool check(int x)
{
while(x>)
{
if(x%==)return true;
if(x%==)return true;
x/=;
}
return false;
}
int main(){
int sum = ;
for(int i=;i<=;i++)
{
if(check(i)){a[i]=sum;continue;}
sum++;
a[i]=sum;
}
int l,r;
while(~scanf("%d%d",&l,&r)&&l+r)
{ printf("%d\n",a[r]-a[l-]);
} return ;
}
当然数位DP更快,利用记忆化DFS
#include <iostream>
#include <cstring>
#include <string>
#include <algorithm>
#include <cstdio>
using namespace std; int dp[][],digit[];
int dfs(int pos,bool pre_6,bool limit)
{
if(pos==)return ;
if(!limit&&dp[pos][pre_6]>=)return dp[pos][pre_6];
int ans=,num=limit?digit[pos]:;
for(int i=;i<=num;i++)
{
if(i==||(pre_6&&i==))
continue;
ans += dfs(pos-,i==,limit&&i==num); //只有之前有限制现在的达到了上限才能构成限制
}
return limit?ans:dp[pos][pre_6] = ans;//如果有限制,那么就不能记忆化,否则记忆的是个错误的数. }
int solve(int x)
{
int len = ;
while(x>)
{
digit[++len]=x%; //将数字存在digit数组中
x/=;
}
return dfs(len,false,true);
} int main(){
memset(dp,-,sizeof(dp));
int l,r;
while(scanf("%d%d",&l,&r),l+r)
{
printf("%d\n",solve(r)-solve(l-));
}
return ;
}
HDU-2089不要62-暴力或数位DP入门的更多相关文章
- HDU - 2089 不要62 (暴力或数位DP)
Description 杭州人称那些傻乎乎粘嗒嗒的人为62(音:laoer). 杭州交通管理局常常会扩充一些的士车牌照.新近出来一个好消息.以后上牌照,不再含有不吉利的数字了.这样一来.就能够消除个别 ...
- hdu 2089 不要62(初学数位DP)
http://acm.hdu.edu.cn/showproblem.php?pid=2089 题意: 给定 m,.n; 求车牌号 m~n之间 有多少数字 不含 4或62 ,8652是可以的 . ...
- HDU 2089 不要62 | 暴力(其实是个DP)
题目: http://acm.hdu.edu.cn/showproblem.php?pid=2089 题解: 暴力水过 #include<cstdio> #include<algor ...
- 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入门题】
不要62 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
- HDU 2089 不要62 (数位DP)题解
思路: 详解 数位DP入门题dp[pos][sta],pos代表当前位数是第几位,sta代表当前状态,因为题目中只要不出现64,所以当前状态只分为两种:前一位是6或不是. #include<io ...
- 数位DP入门之hdu 3555 Bomb
hdu 3555 Bomb 题意: 在1~N(1<=N<=2^63-1)范围内找出含有 ‘49’的数的个数: 与hdu 2089 不要62的区别:2089是找不不含 '4'和 '62'的区 ...
- 数位dp入门 hdu2089 不要62
数位dp入门 hdu2089 不要62 题意: 给定一个区间[n,m] (0< n ≤ m<1000000),找出不含4和'62'的数的个数 (ps:开始以为直接暴力可以..貌似可以,但是 ...
- 数位DP入门
HDU 2089 不要62 DESC: 问l, r范围内的没有4和相邻62的数有多少个. #include <stdio.h> #include <string.h> #inc ...
随机推荐
- 【Docker】unauthorized: incorrect username or password
昨天朋友推荐玩玩 Docker.虽然之前就听过,但一直不清楚干嘛的,也没去搞过,虽然前段时间就装了,但一直没打开.这两天刚开始熟悉,就遇到了点小问题.一番 Google 之后解决了,记录一下. CLI ...
- 简易数据分析 08 | Web Scraper 翻页——点击「更多按钮」翻页
这是简易数据分析系列的第 8 篇文章. 我们在Web Scraper 翻页--控制链接批量抓取数据一文中,介绍了控制网页链接批量抓取数据的办法. 但是你在预览一些网站时,会发现随着网页的下拉,你需要点 ...
- middleware中间件
django 中的中间件(middleware),在django中,中间件其实就是一个类,在请求到来和结束后,django会根据自己的规则在合适的时机执行中间件中相应的方法. 在django项目的se ...
- MySQL操作命令梳理(2)
一.表操作 在mysql运维操作中会经常使用到alter这个修改表的命令,alter tables允许修改一个现有表的结构,比如增加或删除列.创造或消去索引.改变现有列的类型.或重新命名列或表本身,也 ...
- selenium操作cookies实现免密登录,自动发微博
一直想用selenium实现个小功能,比如发微博之类的,但是有的网站在登录会有验证码,没想到太好的方法解决,于是想到利用cookies来登录网站 第一步:获取一个可用的cookies,获取的cooki ...
- 01、VM安装教程
1.运行下载完成的Vmware Workstation虚拟机软件包,将会看到如图所示,然后点击“下一步”按钮, 2.在最终用户许可协议界面选中“我接受许可协议中的条款”复选框,然后点击“下一步”按钮 ...
- springmvc异步处理
好久没有写过博客了,都是看大牛的文章,略过~~ 突然感觉成长在于总结!废话不多说,开干 由于是公司项目,所以不方便给出代码,看图操作 在项目util目录下创建工具类TaskExecutorConfig ...
- Linux--shel的if判断语句--05
if条件语句的使用格式: 1.单分支语句 if [ 条件 ];then 执行语句 fi 注意:[ 条件 ] :条件与中括号要用空格分割:下面的语句同理. 2.双分支语句 if [ 条件 ];then ...
- 重学计算机组成原理(十)- "烫烫烫"乱码的由来
程序 = 算法 + 数据结构 对应到计算机的组成原理(硬件层面) 算法 --- 各种计算机指令 数据结构 --- 二进制数据 计算机用0/1组成的二进制,来表示所有信息 程序指令用到的机器码,是使用二 ...
- Yii2 基础模板前后台登录分离
1.用GII 生成一个模块(modules)名字为 admin 2.在./config/web.php 中加入如下配置 'modules' => [ 'admin' => [ 'class ...