数位DP
Joker & Liar
这个作者很懒,什么都没留下…
展开
-
HDU - 3709 (Balanced Number)
题意:设一个数的十进制表达是 a1a2a3...an ,则它是Balanced Number 的定义是:存在一个位置 i <=n,使得:问区间[l,r] 内有多少个数是Balanced Number;分析:数位操作,看数据范围可以想到是数位DP,上述 i 也就是中间点,因为数据范围1e<=1e18,所以可以枚举进行数位DP;设dp[pos][i][sum]...原创 2020-03-13 14:37:47 · 136 阅读 · 0 评论 -
Gym - 102452J (Junior Mathematician)
题意:给定一个十进制数 x , d(x,i) 表示它十进制第i位的数字,令f(x)定义如下:给定 L 和 R,求[L,R]内有多少个数满足x≡f(x) (mod m);分析:x≡f(x) (mod m),即 f(x)-x≡0 (mod m),明显的数位DP,令 dp[pos][sum][mod] 表示x第pos位,,,这题卡常数,所以要注意一下;代码:#...原创 2020-03-10 23:57:42 · 655 阅读 · 0 评论 -
HDU - 4352 (XHXJ's LIS)
题意:给定 l ,r ,k,求区间 [l,r] 内 最长上升子序列长度为 k 的数的数量,(即把一个整数看成一个由0~9组成的序列);分析:如果只是求一个数的最长上升子序列,那么应该都知道有个 O(nlogn) 的方法,现在就借用这个思想,因为出现的数只有0~9十个数,所以使用状态压缩 S,S 的二进制第 i 位为 1表示这个数出现过,0 则没有,则我们用 S 来模拟上述求一个数的最长...原创 2020-03-06 20:32:26 · 224 阅读 · 0 评论 -
CF - 55D (Beautiful numbers)
题意:给定 l 和 r,求区间 [l,r] 内的 Beautiful number 的数量,Beautiful number 的定义是它能被它十进制上任意一位不为零的数整除;分析:一个数能被它十进制上任意一位不为零的数整除,换种说法就是这个数能被它十进制上所有不为零的数的最小公倍数整除,而2~9的最小公倍数为2520,这样就可以用数位DP写了,我们初设dp[i][j][z]表示走到 第 ...原创 2020-03-06 13:23:28 · 240 阅读 · 0 评论