数位dp
文章平均质量分 87
mumei314
这个作者很懒,什么都没留下…
展开
-
2020上海ICPC区域赛——C题Sum of Log
2020上海ICPC区域赛——C题Sum of Log题目链接:https://ac.nowcoder.com/acm/contest/9925/C题意给你xxx和yyy,让你求出∑i=0x∑j=[i==0]y[i\sum^{x}_{i=0}\sum^{y}_{j=[i==0]}[i∑i=0x∑j=[i==0]y[i&j=0][log2(i+j)+1j=0][log_{2}(i+j)+1j=0][log2(i+j)+1。题解首先我们要把题目中的公式转换一下,当iii&j原创 2021-03-30 00:09:33 · 506 阅读 · 0 评论 -
杭电多校第三场X Number——数位dp+指数型母函数
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6796题目大意:给你一个区间[l,r],让你求出这个区间内满足数位中众数为d的数的个数。题解:一道披着数位dp皮的组合计数题。如果用常规数位dp的思路去维护,不难发现状态很难维护,因此我们要考虑换一种思路。考虑数位dp枚举当前位时,当前位不是数位的上限的情况。eg:假设数位上限为123456789,当前枚举到第七位,之前的数位为123455(即123455XXX),即前面数位有1个1.原创 2020-09-19 00:23:43 · 246 阅读 · 1 评论 -
牛客第六场H题——数位dp
题目链接:https://ac.nowcoder.com/acm/contest/5671/H题意:给你一个区间[l,r],求区间内满足S(A)>S(B)且A<B的对数,S表示一个数的数位和。题解:定义状态dp[i][j][f1][f2][f]表示当前枚举到第pos位,之前的数位差为j,f1表示A是否枚举到数位上限,f2表示B是否枚举到数位上限,f表示前面是否已经满足S(A)>S(B)。然后就是数位dp的常规写法了。代码实现:#pragma GCC opti.原创 2020-09-18 23:24:06 · 237 阅读 · 0 评论 -
2017浙江省赛E-Seven Segment Display——简单数位dp
题目链接:https://zoj.pintia.cn/problem-sets/91827364500/problems/91827370089题目大意:给你一个16进制数s和偏移量n(注意超出的话就从00000000重新开始),0-F分别对应一种权值,求s到s往后加n位的所有数的每一位的权值和,包含前导0.题解:首先要清楚利用数位dp我们可以直接求出L到R的所有数的每一位的权值和或者求出L到R中所有数的每一位的出现次数,然后乘以对应权值相加就是答案。但是这里有一种情况需要考虑,..原创 2020-09-14 20:29:12 · 424 阅读 · 0 评论 -
hdu4352——数位dp+O(nlogn)求LIS+状压
题目链接:https://vjudge.net/problem/HDU-4352题目大意:给你一个区间[l,r],让你求这个区间内符合条件的数的个数。条件:这个数的数位上的LIS的长度等于k。题解:一道很好的题目,需要知道怎么O(nlogn)求LIS,这样在才能进行状态转移。如果不懂怎么O(nlogn)求LIS,可以看下我的的博客:https://blog.csdn...原创 2020-03-25 00:34:00 · 162 阅读 · 0 评论 -
cf55D——数位dp+离散化+构造
题目链接:https://vjudge.net/problem/CodeForces-55D题目大意:计算给定范围中有多少个漂亮数。一个正整数是漂亮数,当且仅当它能够被自身的各非零数字整除。题解:首先要知道一个结论:一个数如果能被一些数整除,那么一定会被这些数的最小公倍数整除。因此我们可以求出lcm(1,2,3....9)=2520.对于任何一个数 num,...原创 2020-03-24 23:03:18 · 252 阅读 · 0 评论 -
hdu4507——数位dp(计数求和)
题目链接:https://vjudge.net/problem/HDU-4507题目大意:如果一个整数符合下面3个条件之一,那么我们就说这个整数和7有关—— 1、整数中某一位是7; 2、整数的每一位加起来的和是7的整数倍; 3、这个整数是7的整数倍;求一定区间内与7无关的数的平方和。题解:这个题约束条件很常见,但是要求的不是数的个数,而是平方和就有点恶心了。...原创 2020-03-23 22:38:11 · 529 阅读 · 0 评论 -
SPOJBALNUM——数位dp+状压
题目链接:https://vjudge.net/problem/SPOJ-BALNUM题目大意:求[l,r]区间的平衡数的个数。平衡数:所有数位中每一个奇数出现偶数次,每一个偶数出现奇数次。题解:定义flag为0表示未出现,1表示出现奇数次,2表示出现偶数次。所以我们可以把0-9的所有数状压成一个10位的三进制数state,这个状态记录每个数的出现情况。定义状态为...原创 2020-03-23 22:19:05 · 243 阅读 · 0 评论 -
luoguP3413——高精度+数位dp
题目链接:https://www.luogu.com.cn/problem/P3413题目大意:求[l,r]中满足"存在长度至少为2的回文子串"的数的个数。题解:存在长度至少为2的回文子串意味着我们只需要考虑是否存在'aa'或者'aba'这种形式的子串就行了。因此我们可以定义状态为dp[pos][pre1][pre2][flag]表示枚举到pos位,pre1表示上一个数...原创 2020-03-23 21:59:45 · 158 阅读 · 0 评论 -
luoguP4127——数位dp+枚举
题目链接:https://www.luogu.com.cn/problem/P4127题目大意:给出两个数a,b,求出[a,b]中各位数字之和能整除原数的数的个数。题解:各位数字之和最大为9*18=162,因此我们可以枚举数字之和。定义状态为dp[pos][sum1][sum2]表示枚举到pos位,前面数位的和sum1,以及前面数位的组成的数对mod取余的结果。最后...原创 2020-03-23 21:42:44 · 144 阅读 · 0 评论 -
hdu3709——数位dp+枚举
题目链接:https://vjudge.net/problem/HDU-3709题目大意:求区间[l,r]里面满足平衡数的数的个数平衡数定义:可以通过找一个平衡数位,该数位左边的数位乘以偏移距离的和等于右边的数位乘以偏移距离的和。e.g:4139,平衡数位为3,4*2+1=9,因此该数是平衡数。题解:定义状态dp[pos][k][sum]表示枚举到pos位置,当前平衡数位...原创 2020-03-23 20:41:48 · 194 阅读 · 0 评论 -
hdu4734——数位dp(减去的艺术)
题目链接:https://vjudge.net/problem/HDU-4734题目大意:求区间[l,r]内满足数x的F(x)<=F(a)的数的个数。对于一个n位的数(AnAn-1An-2....A1),F(x)=An*2^(n-1)+An-1*2^(n-2)+...+A1*1.题解:首先我们肯定要维护一个状态sum表示前pos位数的F(x)值,最后判断一下是否大于F(...原创 2020-03-23 17:48:29 · 243 阅读 · 0 评论 -
poj3252——数位dp(减去的艺术)
题目链接:https://vjudge.net/problem/POJ-3252题目大意:求满足区间[l,r]内满足二进制0的个数大于1的个数的数的个数。题解:设状态dp[pos][sum]表示枚举到第pos个位置,前面的所有数位的数的二进制0的个数减去1的个数。因此sum可能小于0,且最小为-32,因此我们可以离散化一下,把实际的-32看成0,实际的0看成32,这样只需要最...原创 2020-03-23 16:34:50 · 191 阅读 · 0 评论