![](https://img-blog.csdnimg.cn/20190918140053667.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
数位dp
文章平均质量分 51
数位dp
wind__whisper
qwq
展开
-
洛谷P3791:普通数学题(整除分块、前缀和)
解析似乎位运算和易或并没有太多性质上的联系…所以换个角度分析考虑按照二进制进行类似数位dp暴力枚举 i 和 j 的前k,p位与n、m相同,下一位比n、m小。然后后面的东西就可以随便填每个异或的结果都有2^(两个数都可以随便填的位数)的方案然后乘上一个约数个数前缀和的差分即可由于n和m的二进制表示确定,需要求的前缀和的个数其实是O(logn)级别的利用map记忆化一下可以做到n∗logn\sqrt n*\log nn∗logn能够通过本题代码#include<bits/std原创 2021-10-29 10:30:27 · 193 阅读 · 0 评论 -
YBTOJ:魔法数字(数位dp)
文章目录题目描述解析题目描述解析迷惑。。。首先,比较容易想到用二进制状态压缩记录1-9是否在十进制中出现过然后就是整除的问题如果记录余数,它的模数又有9个开九维余数直接爆炸。。。怎么办嘞?有一个结论:若k为p1、p2…pn的公倍数那么(x%k)%pi=x%pi因为k是p的质数,所以这个结论还是挺显然的那么本题就可以找到1-9的最小公倍数(为2520)使它作为模数最后再进行判断即可时间复杂度:18(位数)*512(状态压缩)*2520(取模结果)*10(每次dp枚举)=23原创 2021-07-21 19:48:39 · 344 阅读 · 1 评论 -
P4127 [AHOI2009]同类分布(数位dp)
洛谷传送门文章目录题目描述解析代码题目描述给出两个数a,b求出[a,b]中各位数字之和能整除原数的数的个数。1<=a<=b<=1018解析容易想到数位dp但本题的难点是如果只记录数位和sum与取模的结果res,因为取模的除数发生改变,难以转移如何解决?刚才也提到,本题的难点在于模数发生改变,所以我们就尝试强制使取模的数不变我们发现,因为a、b范围有限,所以这个数位和的范围也是很有限的因此可以枚举数位和分别求解再累加答案问题得到解决代码#include<bi原创 2021-07-21 00:24:54 · 130 阅读 · 0 评论 -
洛谷:P1831 杠杆数(数位dp)
文章目录描述解析代码thanks for reading!传送门描述如果把一个数的某一位当成支点,且左边的数字到这个点的力矩和等于右边的数字到这个点的力矩和,那么这个数就可以被叫成杠杆数。比如4139就是杠杆数,把3当成支点,我们有这样的等式:4 * 2 + 1 * 1 = 9 * 1。给定区间[x,y],求出在[x,y]中有几个杠杆数。解析数位dp具体实现看代码注释吧代码#include<cstdio>#include<cmath>#include<c原创 2021-06-01 20:14:58 · 261 阅读 · 0 评论