随笔分类 - 动态规划-数位dp
摘要:题目链接 题意:构造一个长度为n(n<=1000)的序列,使得序列的元素之和在[l,r]之间且异或和为z 挺有意思的一道题 首先不考虑l的限制,只要求和小于等于r以及异或和等于z,按二进制位从高到低依次对n个数同时赋值,设dp[u][lim]表示赋值完前u个二进制位,且当前位最多能选lim+r[u]
阅读全文
摘要:题意:询问区间[l,r]上有多少个有序对(a,b)满足a+b=a xor b 相加等于异或,言外之意就是两个数每一个二进制位上都不能同时为1,那就让两个数从最高位同时往下走好了,设两个数的f,g分别表示是否撞到上界或者下界,然后dp即可。 1 #include<bits/stdc++.h> 2 us
阅读全文
摘要:题意:求[a,b]区间内的数字中正序对的个数。 具体思路参考: https://blog.csdn.net/weixin_43135318/article/details/88061396 https://www.cnblogs.com/asdfsag/p/11278519.html 在此基础上维护
阅读全文
摘要:题意:统计l-r中每种数字出现的次数 很明显的数位dp问题,虽然有更简洁的做法但某人已经习惯了数位dp的风格所以还是选择扬长避短吧(说白了就是菜啊) 从高位向低位走,设状态$(u,lim,ze)$表示当前走到了第几位,是否有上限,是否有前导零的状态,则问题转化成了求所有转移路径中经过的所有数字的数量
阅读全文
摘要:给定n∈[1,1e12],求1到n的所有整数中,各位数字之和能整除它本身的数的个数。 这道题与UVA-11361类似,假如设dp[u][lim][m1][m2]为枚举到第u位(从低到高数),是否受限,各位之和为m1,本身为m2时继续往下枚举能得到的答案数,可以得到正确的答案。但m2过大不能直接作为状
阅读全文
摘要:给定a,b,k,求[a,b]中有多少个数x满足x和x的各位之和都是k的倍数。 数位dp模板题。设dp[u][lim][m1][m2]为枚举到第u位(从低到高数),是否受限,各位之和对k的模为m1,本身对k的模为m2时继续往下枚举能得到的答案数,往下一位转移即可。对b和a-1分别计算答案,然后相减就得
阅读全文

浙公网安备 33010602011771号