数位dp
文章平均质量分 62
Jozky86
这个作者很懒,什么都没留下…
展开
-
Sum of Log(2020上海C)
Sum of Log题意:求∑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]\lfloor log_{2}(i+j)+1\rfloor∑i=0X∑j=[i=0]Y[i&j=0]⌊log2(i+j)+1⌋题解:数位dp如果式子想有意义,i&j就要等于0,也就是i和j的任何一位都不能同时为1,那么i+j就不会产生进位,也就是⌊log2(i+j)+1⌋\lfloor原创 2021-09-22 11:24:18 · 422 阅读 · 0 评论 -
Xor HDU - 6899
Xor HDU - 6899题意:给你A,B,K,W,问现在有多少个(x,y)满足下列形式?x,y都是整数x∈[0,A],y∈[0,B]|x-y|<=kx xor y<=W题解:数位dp对于第1,2,4都是经典的数位dp转移对于第三点怎么转移?我们将绝对值拆开,得到x−y<=k,y−x<=kx-y<=k,y-x<=kx−y<=k,y−x<=k整理下:k+y−x>=0,k−y+x>=0k+y-x>=0,k-y+x&g原创 2021-09-21 20:30:50 · 129 阅读 · 0 评论 -
CF1245F Daniel and Spring Cleaning(等会了更新)
CF1245F Daniel and Spring Cleaning题意:给定l,r,求∑a=lr∑b=lr[a+b=a⊕b]\sum_{a=l}^{r}\sum_{b=l}^{r}[a+b=a⊕b]∑a=lr∑b=lr[a+b=a⊕b]题解:代码:原创 2021-09-21 11:51:21 · 107 阅读 · 0 评论 -
P6669 [清华集训2016] 组合数问题
P6669 [清华集训2016] 组合数问题题意:给你n,m,k,问有多少对(i,j)满足K∣CijK|C_{i}^{j}K∣Cij(Cij是k的倍数C_{i}^{j}是k的倍数Cij是k的倍数)n,m<=1e18题解:n和m非常大,非常非常大,很容易想到用卢卡斯来化简Cnm mod p=Cn/pm/p∗Cn%pm%pC_{n}^{m}\bmod p=C_{n/p}^{m/p}*C_{n\%p}^{m\%p}Cnmmodp=Cn/pm/p∗Cn%pm%p对于i%p的范围就会很原创 2021-08-27 16:13:36 · 278 阅读 · 0 评论 -
Find 3-friendly Integers
Find 3-friendly Integers题意:定义一个自然数是精妙的,如果他存在一个字串(允许前导0)是3的倍数问L到R中精妙的数的个数题解:数位dp可以做(但我不会。。。)用结论来做,当n>=100时(即为3位数时)必然是精妙的数,这样只需要对<100的暴力即可。这样想,对于每一位mod3,也就是每一位是0/1/2中的一个,如果是0直接合法,也就是剩下3位中分别选1/2,怎么都会有和为3倍数的情况代码:#include<iostream>#include&原创 2021-07-23 16:14:51 · 172 阅读 · 0 评论 -
Meaningless Sequence Gym - 102832D
Meaningless Sequence Gym - 102832D题意:给你n和c,an的公式如下图让你求a0+…an的和,mod 1e9+7题解:训练时推了好一阵子才和队友推出我看网上正解为:一个数的大小与它的二进制表示中的1的个数有关a=c(二进制中1的个数)问题就变成了转化为求所有数中1的个数,dp[i][j]为考虑i~n位,有j个1的情况有多少种,然后数位dp跑,详细可以看代码训练时我们是找到了规律,我通过列出1~20的ai答案,发现规律,比如7,对应的二进制是111,那么原创 2021-07-13 18:55:09 · 219 阅读 · 0 评论 -
Acwing1086. 恨7不成妻(未解决)
Acwing1086. 恨7不成妻题意:问一个区间内与7无关的整数的平方和与7有关包括:1.整数中某一位是 7;2.整数的每一位加起来的和是 7 的整数倍;3.这个整数是 7 的整数倍。题解:数位dp,有点难。。这个题解讲的非常详细参考题解代码:...原创 2021-07-08 15:44:02 · 139 阅读 · 0 评论 -
Acwing 1085. 不要62
Acwing 1085. 不要62题意:问[n,m]这些数中有多少数不包含4,且不包含连续的62题解:经典数位dp,分析过程以前的数位dp博客有写Acwing 1082. 数字游戏代码:#include<bits/stdc++.h>#define debug(a,b) printf("%s = %d\n",a,b);typedef long long ll;using namespace std;inline int read(){ int s=0,w=1;原创 2021-07-08 15:18:17 · 148 阅读 · 0 评论 -
Acwing 1084. 数字游戏 II
Acwing 1084. 数字游戏 II题意:指定一个整数闭区间 [a.b],问这个区间内有多少个取模数。取模数:这种数字必须满足各位数字之和 mod N 为 0。题解:数位dp这里不细讲数位dp了,可以看看Acwing 1081. 度的数量(以及本人对数位dp的浅薄理解)Acwing 1082. 数字游戏这里光讲讲本题与数位dp模板不同的地方本题要求是的是各位数之和mod N为0在预处理树的左侧部分时,我们设dp[i][sum][j]:表示长度为i,最高位为j的,各位之和%N等于su原创 2021-07-07 17:05:48 · 181 阅读 · 0 评论 -
Acwing 1081. 度的数量(以及本人对数位dp的浅薄理解)
题意:求给定区间 [X,Y] 中满足下列条件的整数个数:这个数恰好等于 K 个互不相等的 B 的整数次幂之和。题解:数位DP技巧1:[X,Y]=>f(Y)-f(X-1)技巧2:用树的方式来考虑。在本题中,题意是问[X,Y]中的数 转发成B进制,B进制有K位是1比如样例中:17 ,k=2,B=2就是把17转成二进制,看二进制中是否有K个117的二进制是:10001,说明17=24+20,符合要求我们现在想具体做法:我们利用前缀和的方式,想法1~n之间符合要求的个数,这样就可以方便求出原创 2021-07-07 16:10:23 · 439 阅读 · 0 评论 -
Acwing 1083. Windy数
Acwing 1083. Windy数题意:Windy 定义了一种 Windy 数:不含前导零且相邻两个数字之差至少为 2 的正整数被称为 Windy 数。Windy 想知道,在 A 和 B 之间,包括 A 和 B,总共有多少个 Windy 数?题解:和这个题没啥区别Acwing 1082. 数字游戏题解连接代码:#include<bits/stdc++.h>#define debug(a,b) printf("%s = %d\n",a,b);typedef long long原创 2021-07-07 15:45:18 · 200 阅读 · 0 评论 -
Acwing 1082. 数字游戏
Acwing 1082. 数字游戏题意:现在大家决定玩一个游戏,指定一个整数闭区间 [a,b],问这个区间内有多少个不降数。题解:利用数位dp的套路来做我们还是利用前缀和来做我们先求1~n中满足情况的个数对于一个n位数,我们将其每一位用vector存(an-1 ~ a0),我们从高位到低位开始一位一位考虑,对于第an-1位,我们有两种考虑情况,一个是填0 ~ an-1-1,另一个是填an-1,对于第一个情况,往往是可以直接求出来的,利用组合数或者dp可以求出,在本题中,我们用dp来求第一个情况原创 2021-07-07 14:58:59 · 243 阅读 · 0 评论
分享