hdu2089:不要62(基础数位dp)
题意:规定一个合法的号码不能含有4或者是连续的62
给定区间[n,m] 问此区间内合法的号码的个数
分析:数位dp
dp[i][j]代表 最高位为 j 的 i 位数有多少个合法的
然后按题目规则进行转移即可
dp结束后,再统计范围内的总数,最后打表输出
代码:
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
#define MAX 100000000
int n,k,m;
int ans[];
int dp[][];
int fun(int x)
{
int t=;
int res=;
int a[];
while(x)
{
a[t++]=x%;
x/=;
}
for(int i=t;i;i--)
{
for(int j=;j<a[i-];j++)
{
if((!(j==&&a[i]==)))
res+=dp[i][j];
}
if((a[i-]==&&a[i]==)||a[i-]==)
break;
}
return res;
}
void DP()
{
for(int i=;i<=;i++)
{
if(i!=)
dp[][i]=;
else
dp[][i]=;
}
for(int i=;i<=;i++)
{
for(int j=;j<=;j++)
{
for(int k=;k<=;k++)
{
if(j!=&&(j!=||k!=))
dp[i][j]+=dp[i-][k];
}
}
}
}
void solve()
{
for(int i=;i<=;i++)
{
ans[i]=fun(i);
}
}
int main()
{
DP();
solve();
while(scanf("%d%d",&n,&m)&&(n+m))
{
printf("%d\n",ans[m+]-ans[n]);
}
return ;
}
hdu2089:不要62(基础数位dp)的更多相关文章
- ☆ [HDU2089] 不要62「数位DP」
类型:数位DP 传送门:>Here< 题意:问区间$[n,m]$的数字中,不含4以及62的数字总数 解题思路 数位DP入门题 先考虑一般的暴力做法,整个区间扫一遍,判断每个数是否合法并累计 ...
- HDU2089 ------不要62(数位dp)
不要62 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submi ...
- HDU2089 不要62 题解 数位DP
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2089 题目大意:求区间 \([l,r]\) 范围内不包含数字"4"且不包含连续的数 ...
- hdu2089不要62(数位dp)
#include <stdio.h> #include <string.h> ][]; ]; /* dp[i][0] 不含62,4 dp[i][1] 2开头 dp[i][2] ...
- hdu-2089 不要62 基础DP 模板
http://acm.hdu.edu.cn/showproblem.php?pid=2089 数位DP的思想时预处理以x开头长度为len的数(例如 x000~x999)的所有情况.给出一个数,可以在l ...
- HDU 2089 不要62(数位dp入门)
题意:统计区间 [a,b] 中不含 4 和 62 的数字有多少个. 题解:这是数位DP的入门题了,首先要理解数DP的原理,DP[i][j]:代表第i位的第j值,举个栗子:如4715 数位数是从右向 ...
- hdu2089 不要62--经典数位DP
一道十分经典的数位DP的题目. dp[i][j]表示最高位是数字i,连同最高位在内共有j位.注意边界的初始化. 接下来就是区间划分,特殊情况处理.....对了,如果不知道自己的方法是否正确,可以写一个 ...
- HDU 2089 不要62 【数位dp】
<题目链接> 不要62 Problem Description 杭州人称那些傻乎乎粘嗒嗒的人为62(音:laoer).杭州交通管理局经常会扩充一些的士车牌照,新近出来一个好消息,以后上牌照 ...
- HDU 2089 不要62(数位dp模板题)
http://acm.hdu.edu.cn/showproblem.php?pid=2089 题意:求区间内不包含4和连续62的数的个数. 思路: 简单的数位dp模板题.给大家推荐一个好的讲解博客.h ...
随机推荐
- linux 切换用户之后变成-bash-x.x$的解决方法
我们平时在linux下切换用户后命令行为什么会变成-bash-3.2$呢,我们来分析一下,这就是跟linux的机制有关联了,因为在linux下每次通过useradd创建新的用户时,都会将所有的配置文件 ...
- effective C++: 5实现
五.实现 大多数情况下,适当提出拟的类定义以及函数声明,是花费最多心力的两件事.尽管如此,还是有很多东西需要小心:太快定义变量可能造成效率上的拖延:过度使用转型(casts)可能导致代码变慢又难维护, ...
- 10、Cocos2dx 3.0游戏开发找小三之容器篇:Vector、Map、Value
重开发人员的劳动成果.转载的时候请务必注明出处:http://blog.csdn.net/haomengzhu/article/details/27705613 容器 3.0版本号之前Cocos2d- ...
- ORACLE CASE WHEN 及 SELECT CASE WHEN的使用方法
CASE 语句 CASE selector WHEN value1 THEN action1; WHEN value2 THEN action2; WHEN value3 THEN act ...
- VC用OLE方式读写Excel
前几天要做一个项目,需要读取Excel中的数据.从网上查资料发现,主要是有两种方式.一是把Excel表当成数据库使用ODBC读写,这样操作起来就跟操作Access数据库似的.但这种方式效率比较低.另一 ...
- Android SDK Manager 无法更新SDK
Android SDK Manager 被墙后无法更新SDK 下载sdk时抛出错误:Failed to fetch URL http://dl-ssl.google.com/ 參考例如以下博客: ht ...
- android ViewFlipper的使用
有个android.widget.ViewAnimator类继承至FrameLayout,ViewAnimator类的作用是为FrameLayout里面的View切换提供动画效果.该类有如下几个和动画 ...
- C++指针数组和数组指针
指针相关问题 using namespace std; int main(){ //a) 一个整型数( An integer) int a; //b) 一个指向整型数的指针( A pointer to ...
- RHEL6.3进入单用户模式并重置root密码
单用户模式类似于windows下的安全模式,允许root账号不输入密码直接启动并登录系统进行系统维护. 单用户模式只允许root账号登录,不允许其它用户使用ssh协议进行远程连接. 重启系统时按Ent ...
- Resizable(调整大小)组件
一.加载方式 //class 加载方式 <div id="rr" class="easyui-resizable" data-options=" ...