![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数位dp
文章平均质量分 62
是羊驼鸭
这个作者很懒,什么都没留下…
展开
-
LightOJ - 1032 Fast Bit Calculations(数位dp)
题目链接:点击这里题目大意:给定一个正整数 nnn ,求 [0,n][0,n][0,n] 中有多少个二进制相邻位是1的总数题目分析:数位 dpdpdp定义状态 dp[i][j][k]dp[i][j][k]dp[i][j][k] 为前 iii 位上一位是 jjj ,前 i−1i-1i−1 位和为 kkk 的数中二进制相邻位是1的总数按照数位 dpdpdp 转移,转移时维护上一位,和上一位的答案即可之所以要维护上一位的答案来作为下一位的状态,是因为不记录的话会有很多答案不同的状态被一同表示,例如如原创 2021-08-13 17:00:44 · 78 阅读 · 0 评论 -
LightOJ - 1068 Investigation(数位dp)
题目链接:点击这里题目大意:多组样例,每组样例给出一个区间 [l,r][l,r][l,r] 和一个 kkk ,求区间内有多少个数字满足其本身和数位和都能被 kkk 整除题目分析:由于 k≤1e4k\le 1e4k≤1e4 所以如果我们开 dp[pos][maxk][maxk]dp[pos][max_k][max_k]dp[pos][maxk][maxk] 这么大的数组来让 dp[i][j][k]dp[i][j][k]dp[i][j][k]表示前 pospospos 位的代表的数字模 kkk 为原创 2021-08-13 17:00:33 · 151 阅读 · 0 评论 -
LightOJ-1140 How Many Zeroes?(数位dp)
题目链接:点击这里题目大意:ttt 组样例,每组样例给出一个区间 [l,r][l,r][l,r] ,求在该区间内所有数字数位上的 000 的个数和题目分析:数位 dpdpdp注意前导零是不会被书写多次的,所以我们要记录 pospospos 位之前有多少个不是前导零的 000 ,然后在最底层将该个数返回即可,其余部分正常数位 dpdpdp 转移即可具体细节见代码://#pragma GCC optimize(2)//#pragma GCC optimize("Ofast","inline","原创 2021-08-12 16:31:09 · 95 阅读 · 0 评论 -
SPOJ - BALNUM Balanced Numbers(数位dp+三进制状压)
题目链接:点击这里题目大意:求区间 [l,r][l,r][l,r] 有多少种平衡数字,其定义为其数位数字奇数的数字出现偶数次,偶数的数字出现了奇数次题目分析:我们发现对于数位上的每种数字只可能有三种状态:没出现过、出现了奇数次、出现了偶数次。所以我们可以用三进制状态压缩来表示每种数字的状态,然后正常数位 dpdpdp 即可具体细节见代码://#pragma GCC optimize(2)//#pragma GCC optimize("Ofast","inline","-ffast-math"原创 2021-08-11 22:20:50 · 118 阅读 · 0 评论 -
HDU - 3709 Balanced Number(数位dp)
题目链接:点击这里题目大意:求 [l,r][l,r][l,r] 区间内满足要求的平衡数,其定义为以这个数字的一个数位为支点,两边数字大小乘力矩之和相等的数字题目分析:数位dp枚举支点 xxx ,然后搜一下以当前点为支点有多少种平衡数,具体的:我们在搜索时维护对支点 xxx 的力矩和,在最底层判断其是否为 000 即可所以状态为 dp[pos][x][sum]dp[pos][x][sum]dp[pos][x][sum] 表示前 pospospos 位以支点 xxx ,前 pospospos 位相对原创 2021-08-11 22:20:31 · 67 阅读 · 0 评论 -
CodeForces - 55D Beautiful numbers(数位dp)
题目链接:点击这里题目大意:求 [l,r][l,r][l,r] 有多少种漂亮数字,其定义为能被他所有非零数字整除的数字题目分析:数位dp如果一个数能整除的他的所有非零数位,相当于他能整除所有非零数位的最小公倍数,所以在记忆化是我们可以维护一下数位前缀的 lcmlcmlcm 。我们发现 lcm(1,2,...,9)=2520lcm(1,2,...,9)=2520lcm(1,2,...,9)=2520 ,所以可以利用取余的性质:若 amod b=0a\mod b=0amodb=0 那么 (am原创 2021-08-11 22:19:51 · 114 阅读 · 0 评论 -
AtCoder - abc194_f Digits Paradise in Hexadecimal(数位dp)
题目链接:点击这里题目大意:给出一个 161616 进制数 nnn ,求 [1,n][1,n][1,n] 内有多少个 161616 进制数由 kkk 个不同的数字组成题目分析:数位 dpdpdp对于一个数由多少种不同的数字组成这个条件,我们可以采取状态压缩的方式记录,在高位向低位转移时把该位的贡献算入即可,当递归到最底层是,判断该状态是否有精确的 kkk 个一即可注意 000 在作为前导零时是不能算作组成数字的,因此我们在转移时应根据其是否是前导零来进行转移具体细节见代码://#pragma原创 2021-08-11 22:19:21 · 134 阅读 · 0 评论 -
Sum of Log(数位dp)
题目链接:点击这里题目大意:给出 X,YX,YX,Y ,求 ∑i=0X∑j=[i=0]Y[i&j=0]⌊log2(i+j)+1⌋\sum_{i=0}^{X} \sum_{j=[i=0]}^{Y}[i\&j=0]\left \lfloor log_2(i+j)+1 \right \rfloor∑i=0X∑j=[i=0]Y[i&j=0]⌊log2(i+j)+1⌋题目分析:...原创 2021-05-07 15:53:18 · 572 阅读 · 4 评论 -
hdu6899 Xor(数位dp)
题目链接:点击这里题目大意:给定 A,B,K,WA,B,K,WA,B,K,W 四个整数,求满足如下条件的二元组 (x,y)(x,y)(x,y) 的个数:x,yx,yx,y 是整数x≤A,y≤Bx\le A,y\le Bx≤A,y≤B∣x−y∣≤K|x-y|\le K∣x−y∣≤Kx xor y≤Wx\ xor\ y\le Wx xor y≤W题目分析:数位 dpdpdp ,定义状态 dp[x−y+k≤0][y−x+k≤0][x≤A][y≤B][x&原创 2021-05-07 14:33:55 · 111 阅读 · 2 评论 -
CodeForces - 628D Magic Numbers (数位dp)
题目链接:点击这里题目大意:给你 444 个数 m,d,l,rm,d,l,rm,d,l,r ,保证 l,rl,rl,r 位数相同。问满足以下条件的数 xxx 的个数:l≤x≤rl \leq x\leq rl≤x≤rxxx 的偶数位是 ddd,奇数位不是 ddd。 (这里定义偶数位为从高位往低位的数的偶数位)m∣xm|xm∣x答案对 1e9+71e9+71e9+7 取模题目分析:数位 dpdpdp ,因为这里的 l,rl,rl,r 位数有点多,所以直接求 [1,l−1][1,l-1][1原创 2020-12-21 13:28:33 · 176 阅读 · 0 评论