数位dp入门 hdu2089 不要62
题意: 给定一个区间[n,m] (0< n ≤ m<1000000),找出不含4和'62'的数的个数 (ps:开始以为直接暴力可以。。貌似可以,但是直接TLE了2333).其实是数位DP的入门题;
- 初探数位DP:写的很详细(看完就不必看我的代码了..)
- f[i,j]:位置长度为i以j开头的符合条件的数的个数;(一般的dp式子中,第二个参数依题意);这就直接可以推出f[i,j] = f[i,j] + f[i-1,k] ( j != 6 || k != 2)
- 开始打表打出所有的f[i][k];之后就sum(a)计算小于a的符合要求的数的个数(相当于树状数组);里面从高位起,看小于a的情况数(只看高位),这就导致了当高位不符合
- **范围计数详见sum();
#include<bits/stdc++.h>
using namespace std;
int f[][];
void init()
{
f[][] = ;
for(int i = ;i <= ;i++){
for(int j = ;j <= ;j++)
for(int k = ;k <= ;k++)
if(j != && (j != || k != ))
f[i][j] = f[i][j] + f[i-][k];
}
}
int sum(int a)
{
int digit[]={},len = ;
while(a){
digit[++len] = a % ;
a /=;
}
int ans = ,i,j;
for(i = len;i > ;i--){ //哪一位小于n;
for(j = ;j < digit[i];j++)//当j = 0时,代表了所有位数比n少的情况,即049,009均包括了,所以在后面出现的数其实是最高位和n相同的数;
if(j != && (j != || digit[i+] != ))
ans += f[i][j];
if(j == || (j == && digit[i+] == ))
break;
}
return ans;
}
int main()
{
init();
int a,b;
while(scanf("%d%d",&a,&b) == && a + b){
printf("%d\n",sum(b+) - sum(a));
}
}
用递归写起来更清爽,递归版本:
#include<bits/stdc++.h>
using namespace std;
int dp[][];
int bit[];
int dfs(int pos,int d,int on = )
{
if(pos == ) return ;
int ans = dp[pos][d];
if(!on && dp[pos][d] != -) return ans;
ans = ;
int e = (on? bit[pos]:);
for(int i = ;i <= e; i++)
if(i != && (d != || i != ))
ans += dfs(pos - ,i,i == e && on);
if(!on) dp[pos][d] = ans;
return ans;
}
int cal(int a)
{
int tot = ;
while(a){
bit[++tot] = a%;
a /= ;
}
return dfs(tot,);
}
int main()
{
memset(dp,-,sizeof(dp));
int n,m;
while(scanf("%d%d",&n,&m) == && n + m){
//cout<<cal(m)<<" "<<cal(n - 1)<<" ";
printf("%d\n",cal(m) - cal(n - ));
}
}
数位dp入门 hdu2089 不要62的更多相关文章
- 【数位dp】hdu2089 不要62
http://www.cnblogs.com/xiaohongmao/p/3473599.html #include<cstdio> using namespace std; int n, ...
- HDU 2089 不要62【数位DP入门题】
不要62 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
- xbz分组题B 吉利数字 数位dp入门
B吉利数字时限:1s [题目描述]算卦大湿biboyouyun最近得出一个神奇的结论,如果一个数字,它的各个数位相加能够被10整除,则称它为吉利数.现在叫你计算某个区间内有多少个吉利数字. [输入]第 ...
- hdu3555 Bomb 数位DP入门
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3555 简单的数位DP入门题目 思路和hdu2089基本一样 直接贴代码了,代码里有详细的注释 代码: ...
- 数位DP入门题——[hdu2089]不要62
数位DP是我的噩梦. 现在初三了,却没AC过数位DP的题目. 感觉数位DP都是毒瘤-- 题目 hdu不用登录也可以进去,所以就不把题目copy到这里来了. 题目大意 求区间[n,m][n,m][n,m ...
- HDU 2089 不要62(数位dp入门)
题意:统计区间 [a,b] 中不含 4 和 62 的数字有多少个. 题解:这是数位DP的入门题了,首先要理解数DP的原理,DP[i][j]:代表第i位的第j值,举个栗子:如4715 数位数是从右向 ...
- 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入门
不要62 题意:给定区间,求在这个区间中有多少个数字,不包含4且不包含62: 这道题作为数位DP的入门题: 暴力也是可以过 #include<cstdio> #include <io ...
- Hdu 2089 不要62 (数位dp入门题目)
题目链接: Hdu 2089 不要62 题目描述: 给一个区间 [L, R] ,问区间内不含有4和62的数字有多少个? 解题思路: 以前也做过这个题目,但是空间复杂度是n.如果数据范围太大就GG了.今 ...
随机推荐
- libpcre.so.1 cannot be found
安装完Nginx之后,启动报错. [vagrant@localhost sbin]$ sudo ./nginx ./nginx: error while loading shared librarie ...
- NoSQL 数据库产品学习总结(一)
NoSQL 数据库产品学习总结(一) 本篇文章共分为四个章节,会陆续整理下 Memcached.Redis.tair.mongodb.hbase.SequoiaDB. Cassandra的相关知识. ...
- RHCA学习笔记:RH442-Unit6 磁盘性能调整
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://alansky.blog.51cto.com/634963/654451 UNIT ...
- CCLabelTTF 如何支持换行符和换行
参考自http://www.cocos2d-x.org/wiki/How_does_CCLabelTTF_support_line_breaks_and_wrapping 环境: cocos2d-x ...
- GitHub干货分享(APP引导页的高度集成 - DHGuidePageHUD)
每一个APP都会用到APP引导页,分量不重但是不可缺少,不论是APP的首次安装还是版本的更新,首先展现给用户眼前的也就只有它了,当然这里讲的不是APP引导页的美化而是APP引导页的高度集成,一行代码搞 ...
- IOS设备上给body绑定click事件不生效及其解决办法
事件背景: 最近在做一个移动端业务的时候碰到一个bug,在ios上对body绑定click事实现事件代理冒泡至某些元素上尽然不生效. 思考: 暂借助jquery展示下事件绑定代码,将所有标签含有dat ...
- javascript进击(四)HTML DOM
HTML DOM (文档对象模型) 什么是DOM? DOM 是 W3C(万维网联盟)的标准. DOM 定义了访问 HTML 和 XML 文档的标准. W3C 文档对象模型 (DOM) 是中立于平台和语 ...
- Redis与Memcached对比
Redis是一种高级key-value数据库.它跟memcached类似,不过数据可以持久化,而且支持的数据类型很丰富,有字符串.链表.集合和有序集合.支持在服务器端计算集合的并,交和补集等.还支持多 ...
- 跨时钟域设计【一】——Slow to fast clock domain
跨时钟域设计是FPGA设计中经常遇到的问题,特别是对Trigger信号进行同步设计,往往需要把慢时钟域的Trigger信号同步到快时钟域下,下面是我工作中用到的慢时钟域到快时钟域的Verilog HD ...
- R-大数据分析挖掘(5-R基础回顾)
(一)R函数 R是一种解析型语言,输入后可直接获取结果 函数(输入参数,参数) R的函数分为“高级”和“低级函数” • 高级函数可调用低级函数 • 高级函数称为泛型函数 • 函数名 <-‐ ...