数位dp
文章平均质量分 57
ACMer_hades
没有伞的孩子只能够努力奔跑!
展开
-
hdu(3555)——Bomb(不要49)
这道题和不要62那道题有些类似,这道题是不要出现连续的49。思路大致一样,只是在对f数组进行初始化的时候,我们需要求的是数中不含有49的个数,然后最后利用n+1-cal(n+1)来求出正确答案,这里与我想的有些不同。还要注意一点,要全部转化为__int64,要不然的话会WA。#include#include#include#include#include#include#i原创 2015-08-26 14:04:26 · 950 阅读 · 0 评论 -
hdu(2089)——不要62(数位dp)
这道题很早之前就用数位dp做过一遍,但是那时候并没有理解透彻。今天又细细思考了一下,感觉比之前要好多了题意:就是叫你在[n,m]这个区间范围内找出不包含4和62的数字的个数。思路:1)暴力2)数位dp: 做数位dp前,我们首先需要初始化,我们定义f[i][j]为开头为j的i位数中正常的数字有几个。 然后我们可以用三层for循环来对f数组进行初始化。原创 2015-08-26 00:07:04 · 1098 阅读 · 0 评论 -
hdu(3652)——B-number(数位dp)
题意:让你求出1~N中含有13这个子串的并且能够被13整除的数有几个,并输出数量。思路:卡了好几天啊!!还是看了别人的题解才获得的思路。本人一开始想的比较简单,就是记录一下乘出来的数字,然后在最后判断一下,但是我觉得我是在记忆化那里写错了,我记忆化保存的状态好像少了一维,所以导致最后错误代码输1000这个数据时是错误的答案,现在也没能想清楚要怎么修改自己的这个程序(貌似再加一维?)原创 2016-03-01 20:30:20 · 605 阅读 · 0 评论 -
HYSBZ 1026——windy数(数位dp)
重新搞了一下数位dp。。学会了用类似于dfs的递归方式去写。windy定义了一种windy数。不含前导零且相邻两个数字之差至少为2的正整数被称为windy数。 windy想知道,在A和B之间,包括A和B,总共有多少个windy数? 我们假设当depless则代表之前枚举的数位上是否有过数字比给定的上界数字对应数位上的数字小。1)less为真,则表示当前数位可以枚举的值为0~9原创 2016-02-24 21:00:25 · 664 阅读 · 0 评论 -
HDU 3555——Bomb
这也是一道数位dp的题。题意:让你在1~N中间找出含有“49”的数有几个,并输出。思路:这一开始我想着和上一题一样,正着枚举,但是发现这样子不太方便,后来借鉴了别人的思路发现我们可以反着做,先找出不含有49的数有几个,然后用N减掉就好了。这里还包含了0,所以记得要加上1。*然后dp[dep][pre]记得要开LL,要不然会WA。#include#include#原创 2016-02-24 21:12:19 · 550 阅读 · 0 评论 -
hdu 2089——不要62
题意:就是求出来一个数段中不含有62的数的数量有多少?和之前的一道题差不多,就是稍微改了一下条件就好了。#include#include#include#include#include#include#include#include#include#includeusing namespace std;typedef __int64 ll;typ原创 2016-02-25 14:10:10 · 565 阅读 · 0 评论