xbz分组题B 吉利数字 数位dp入门
B吉利数字
时限:1s
【题目描述】
算卦大湿biboyouyun最近得出一个神奇的结论,如果一个数字,它的各个数位相加能够被10整除,则称它为吉利数。现在叫你计算某个区间内有多少个吉利数字。
【输入】
第一行为样例个数N。接下来N行,每一行代表一个输入样例,每个输入样例有2个数,分别代表某个区间的起点a和终点b。
注意所求区间为[a,b],1<=a<=b<=10^9
【输出】
N行。对于第x个输入样例,在第x行输入该样例所对应的结果。
【输入样例】
2
1 10
1 20
【输出样例】
0
1
【Hint】1-10之内无幸运数,1-20内只有19 这1个幸运数
------------------------------------------------------------------------------------
数位dp入门题。
一开始参考了数位dp入门ppt的非递归写法,先打个表再计算,结果YY了半天还是错了T^T
这里有个用dfs写法写数位dp的模板:
http://www.cnblogs.com/jffifa/archive/2012/08/17/2644847.html
代码:
#include <stdio.h>
#include <string.h>
int dp[][];
int dig[]; int dfs(int i,int s,bool e)
{
if (!i) return (s==?:);
if ((!e)&&(dp[i][s]!=-)) return dp[i][s];
int res=;
int u=e?dig[i]:;
for (int q=;q<=u;q++)
res+=dfs(i-,(s+q)%,e&&q==u);
if (!e) dp[i][s]=res;
return res;
} int f(int n)
{
int len = ;
while(n)
{
dig[++len] = n % ;
n /= ;
}
return dfs(len,,true);
} int main()
{
int a,b,T;
memset(dp,-,sizeof(dp));
scanf("%d",&T);
while (T--)
{
scanf("%d %d",&a,&b);
printf("%d\n",f(b)-f(a-));
}
return ;
}
核心部分:(来自neopenx大神,orz)
int dfs(int len,int remain,bool fp)
{
if(!len) return remain==?:;
if(!fp&&dp[len][remain]!=-)
return dp[len][remain];
int ret=,fpmax=fp?digit[len]:;
for(int i=;i<=fpmax;i++)
ret+=dfs(len-,(remain+i)%,fp&&i==fpmax);
if(!fp) dp[len][remain]=ret;
return ret;
} int f(int n)
{
int len=;
while(n)
{
digit[++len]=n%;
n/=;
}
return dfs(len,,true);
}
len:表示当前扫描到的数的位数,从高位向地位扫描
remain:表示当前状态。如本题中表示从最高位到当前位各位数字和%10
fp:又叫first place,neopenx的大神的理解是第一次打表
该dfs函数的基本思想也是打个表记下来,边记边用
fpmax:当前最高位
扩展:hdu2089
http://blog.csdn.net/dgq8211/article/details/9296953
xbz分组题B 吉利数字 数位dp入门的更多相关文章
- HDU 2089 不要62【数位DP入门题】
不要62 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
- 数位dp入门 hdu2089 不要62
数位dp入门 hdu2089 不要62 题意: 给定一个区间[n,m] (0< n ≤ m<1000000),找出不含4和'62'的数的个数 (ps:开始以为直接暴力可以..貌似可以,但是 ...
- hdu3555 Bomb 数位DP入门
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3555 简单的数位DP入门题目 思路和hdu2089基本一样 直接贴代码了,代码里有详细的注释 代码: ...
- HDU 2089 - 不要62 - [数位DP][入门题]
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2089 Time Limit: 1000/1000 MS (Java/Others) Memory Li ...
- 哈尔滨工程大学ACM预热赛 G题 A hard problem(数位dp)
链接:https://ac.nowcoder.com/acm/contest/554/G Now we have a function f(x): int f ( int x ) { if ( ...
- hdu 2089 数位dp入门题
#include<stdio.h> //dp[i][0]代表不存在不吉利数字 //dp[i][1]代表不存在不吉利数字但是以2开头 //dp[i][2]代表存在不吉利数字 #define ...
- 牛客小白月赛8 - E - 诡异数字 数位DP
牛客小白月赛8 - E - 诡异数字 题意: 求区间中,满足限制条件的数字的个数. 限制条件就是某些数字不能连续出现几次. 思路: 比较裸的数位DP, DP数组开一个dp[len][x][cnt] 表 ...
- 数位DP入门题——[hdu2089]不要62
数位DP是我的噩梦. 现在初三了,却没AC过数位DP的题目. 感觉数位DP都是毒瘤-- 题目 hdu不用登录也可以进去,所以就不把题目copy到这里来了. 题目大意 求区间[n,m][n,m][n,m ...
- SCUT - 289 - 小O的数字 - 数位dp
https://scut.online/p/289 一个水到飞起的模板数位dp. #include<bits/stdc++.h> using namespace std; typedef ...
随机推荐
- java 21 - 9 复制图片的4种方式
需求:复制图片 分析: 因为图片我们用记事本打开后无法读懂,所以用字节流 并且字节流复制有4种方式,所以我们尝试4种方式. 推荐第四种:缓冲字节流一次读取一个字节数组 首先写main方法: publi ...
- Java常用类库——Runtime
runtime运行时候,是封装了一个JVM进程的类,每一个JAVA程序实际上启动了一个JVM进程,那么每个JVM对应一个runtime实例.此实例是由JVM为其实例化. 本类的定义中没有构造方法,因为 ...
- 键盘事件keydown、keypress、keyup随笔整理总结(摘抄)
原文1:http://www.cnblogs.com/silence516/archive/2013/01/25/2876611.html 原文2:http://www.cnblogs.com/leo ...
- SQL2008安装后激活方式以及提示评估期已过解决方法(转)
第一步:进入SQL2008配置工具中的安装中心第二步:再进入维护界面,选择版本升级第三步:进入产品密钥,输入密钥第四步:一直点下一步,直到升级完毕.SQL Server 2008 Developer: ...
- 【转】【WPF】资源读取 URI
一开始看到WPF里面经常用如下语句来构造资源文件Uri: Uri uri = new Uri("/AssemblyName;component/image.png"); 我还以为这 ...
- StaticFileMiddleware中间件如何处理针对文件请求
StaticFileMiddleware中间件如何处理针对文件请求 我们通过<以Web的形式发布静态文件>和<条件请求与区间请求>中的实例演示,以及上面针对条件请求和区间请求的 ...
- MTK 平台上查询当前使用的摄像头模组及所支持预览分辨率
1,MTK 平台如何查询当前使用的是哪颗摄像头及相关的模组信息? 在该目录下可以查到当前平台及相关项目的配置文件 ProjectConfig.mk \ALPS.JB.MP.V1_W_20120919\ ...
- 流程引擎Activiti系列:如何将kft-activiti-demo-no-maven改用mysql数据库
kft-activiti-demo-no-maven这个工程默认使用h2数据库,这是一个内存数据库,每次启动之后都要重新对数据库做初始化,很麻烦,所以决定改用mysql,主要做3件事情: 1)在mys ...
- 嵌入式Linux应用开发——Linux下的C编程基础
一.markdown简单操作 1.标题 在文字开头加上 “#”,通过“#”数量表示几级标题. 通过在文字下方添加“=”和“-”,他们分别表示一级标题和二级标题. 2.块注释 通过在文字开头添加“> ...
- 实验5 简单嵌入式WEB服务器实验 实验报告 20135303 20135326
北京电子科技学院(BESTI) 实 验 报 告 课程:信息安全系统设计基础 班级: 1353 姓名:20135303 魏昊卿 学号:2013532 ...