数位dp
fnliren
一位无名没脑老年退役oier
展开
-
[bzoj 1662--Usaco2006 Nov]Round Numbers 圆环数
正如你所知,奶牛们没有手指以至于不能玩“石头剪刀布”来任意地决定例如谁先挤奶的顺序。她们甚至也不能通过仍硬币的方式。 所以她们通过”round number”竞赛的方式。第一头牛选取一个整数,小于20亿。第二头牛也这样选取一个整数。如果这两个数都是”round numbers”,那么第一头牛获胜,否则第二头牛获胜。 如果一个正整数N的二进制表示中,0的个数大于或等于1的个数,那么N就被原创 2018-02-01 14:26:17 · 583 阅读 · 0 评论 -
[bzoj 3209]花神的数论题
设 sum(i) 表示 i 的二进制表示中 1 的个数。给出一个正整数 N ,花神要问你派(Sum(i)),也就是sum(1)—sum(N) 的乘积。这道题在网上的做法千奇百怪,我来讲一下我的蒟蒻做法,就是普通的数位dp,没用快速幂什么的。定义f[i][j],i不用我讲吧,为位数,j即为枚举到现在1的个数,那之后就是常规做法。值得注意的一点是当枚举到0时(即为没有1),需return 1,不原创 2018-02-01 16:59:51 · 202 阅读 · 0 评论 -
[bzoj 1833--ZJOI2010]count 数字计数
给定两个正整数a和b,求在[a,b]中的所有整数中,每个数码(digit)各出现了多少次。这道题是一道比较好的数位dp,首先不要想着一下子解决,而要把大问题分解成小问题,1~9分别解决。定义f[i][j][k]意为i为枚举到现在的位数(从后往前),j为当前需算出的数码的值,k为当前已经算出的数码的个数,然后就是常规了。注意long long(本题一个大坑点),还有输出格式问题,前导0问题。原创 2018-02-03 15:17:32 · 254 阅读 · 0 评论 -
[bzoj 1799--AHOI2009]self 同类分布
给出a,b,求出[a,b]中各位数字之和能整除原数的数的个数。这道题一看就是数位dp,但是这题有难度,因为这题牵扯到了两个东东(各位数字之和,原数),所以要固定一个量,所以要枚举各位数字之和。定义f[i][j][k],i为枚举到的位数(从后往前),j一开始为枚举到的各位数字之和,然后减去枚举到的数值,到最后如果为0,则为满足条件,k为当前的数值%各位数字之和的值,如果最后为0,则为满足情况。原创 2018-02-05 11:40:28 · 248 阅读 · 0 评论 -
[hdu 3709]Balanced Number
判断一个数是否为Balanced Number,当且仅当这个数中有一个平衡位,在平衡位左边的数位的值乘与平衡位的距离等于在平衡位右边的数位的值乘与平衡位的距离,举个例子,4139就是个Balanced Number,3就为平衡位,4*2+1*1=9*1,所以4139就是个Balanced Number。现在,要你求[x,y]中有多少个Balanced Number。这道题是数位dp,有两个我原创 2018-02-05 16:11:36 · 191 阅读 · 0 评论 -
[hdu 4734]F(x)
For a decimal number x with n digits (AnAn-1An-2 … A2A1), we defineits weight as F(x) = An * 2n-1 + An-1 * 2n-2 + … + A2 * 2 + A1 * 1. Now you are given two numbers A and B, please calculate how ma原创 2018-01-30 11:33:07 · 222 阅读 · 0 评论 -
[bzoj 1026--SCOI2009]windy数
windy定义了一种windy数。不含前导零且相邻两个数字之差至少为2的正整数被称为windy数。 windy想知道,在A和B之间,包括A和B,总共有多少个windy数?这题感觉难度其实不大,但由于数位dp刚学没多久,所以便认为这个前导0感到有点恶心。一开始要认为它有前导0(其实是因为是最前位,没有前面的数跟它比较,没有限制),之后便是套路了。f[i][j]枚举到第i位前一个为j时的合法的个原创 2018-01-30 15:03:52 · 253 阅读 · 0 评论 -
[bzoj 5064]B-number
王女士是一个数学爱好者,这些天她对B数很感兴趣。 B数的定义:能被13整除且本身包含字符串”13”的数。例如:130和2613是B数,但是143和2639不是B数。 你的任务是计算1到n之间有多少个数是B数。这道题可以算是一道较水的数位dp,可以说是比较套路了,把握好f数组就好了。定义f[i][j][k1][k2],i为枚举到的位数(从后往前),j为枚举到的前一个的数,k1表示这个数是否包含原创 2018-02-06 15:19:14 · 380 阅读 · 0 评论 -
[bzoj 3679]数字之积
一个数x各个数位上的数之积记为f(x) <不含前导零> 求[L,R)中满足0< f(x)<= n的数的个数(我的做法应该在这道题里面是最差的了,并且代码应该是最丑的了) 这道题的新奇的地方实际是n的范围,不然其实上是一道大水题了。但其实也只需要改动一点小地方,因为我们发现数位之积是2,3,5,7的倍数,不会有其他的质因子参与进来。所以我们定义一个五维数组,f[...原创 2018-02-08 16:10:58 · 332 阅读 · 0 评论