很典型的数位dp,把全球第一的代码拿过来研究了一下,加了点注释 代码作者:waakaaka 个人主页:https://leetcode.com/waakaaka/ ...
分类:
其他好文 时间:
2019-03-17 21:32:52
阅读次数:
174
题意 "题目链接" Sol 看到这种题就不难想到是数位dp了。 一个很显然的性质是一个数若能整除所有位数上的数,则一定能整除他们的lcm。 根据这个条件我们不难看出我们只需要记录每个数对所有数的lcm(也就是2520)取模的结果 那么$f[i][j][k]$表示还有$i$个数要决策,之前的数模$25 ...
分类:
其他好文 时间:
2019-03-17 20:02:41
阅读次数:
172
其实另一种计数写法对别的题目有一定的启发性,需要特别注意的是,无论哪种写法的dp结果中存的数字都是和le与ri无关的。所以在数位受限时不能取用计算过的dp值,也不能更新dp值,不受限的情况可以重复利用。 无注释版: 一个更简单的模板,去掉了很多奇奇怪怪的东西,比如前导0,前导0的确应该特殊考虑而不能 ...
分类:
其他好文 时间:
2019-03-14 01:03:15
阅读次数:
182
题意: 求[l,r]中数字0-9分别出现的次数,11算两次1 思路: 数位dp题解好难写,直接贴代码吧 dp[i]表示[0, 10^i-1]中出现j的次数(按i位补全前导0,显然0-9出现的次数是相同的) 最后再减去每一位出现的前导零即可 代码: ...
分类:
其他好文 时间:
2019-03-12 21:16:44
阅读次数:
220
题面 数位DP+状压。 首先,按照数位DP的基本套路,每个个位数的最小公倍数为2520,所以只用考虑模2520的情况。考虑一个DP。dp[i][j][k]表示当前是第ii位,2~9的数的集合为j,模2520为k的方案数。然后,就是数位DP的基本套路解决这道题。 跑的好慢啊QwQ ...
分类:
其他好文 时间:
2019-03-02 13:41:07
阅读次数:
267
思路 看到多个子串并且不能包含的情况,想到了AC自动机 但是题目多了一个不能大于给出的n的限制条件,联想数位dp的过程,设f[i][j][0/1]表示在第i位,AC自动机的第j个节点,数位有/无限制的方案数 dp方程就是对应的转移到子节点即可,不向有标记的节点转移 注意如果跳fail能够跳到限制节点 ...
分类:
其他好文 时间:
2019-03-02 10:43:44
阅读次数:
185
https://vjudge.net/contest/70324 A - Beautiful numbers 统计区间内的,被数位上各个为零数字整除的数的个数。 下面是暴力的数位dp写法,绝对会TLE的,因为这个要深入到每个数字的最后才能判断是否合法。因为(错误的状态设计导致完全变成暴力dfs搜索) ...
分类:
其他好文 时间:
2019-02-28 22:50:01
阅读次数:
205
简直神题啊。。。。我服气 我只会递推的数位DP啊,为啥题解都是dfs的 首先不难想到每次减少一定是变得越小越好,也就是找数位中最大的数减掉 可以这样想,每次把后面一段给压到00.....000x,然后在减去一个数变成999....999y 设f[mx][ln][u]为当前弄到第ln位,前面位的最大值 ...
分类:
其他好文 时间:
2019-02-26 10:28:03
阅读次数:
167
https://scut.online/p/249 数位dp的模板题? 需要特殊判断0,这个很不优雅,因为0-1=-1是个很奇葩的东西? ...
分类:
其他好文 时间:
2019-02-19 23:34:03
阅读次数:
355
题目链接: "戳我" AC自动机+动态规划。 我们设$dp[1/2/3][i][j]$来表示不同的状态,i表示处理到文本串第i位,j表示处理到AC自动机上节点j。 因为这道题有前导零,所以我们可以参考一下数位DP的思想,我们区分有限制和没有限制的情况分类套路进行AC自动机上DP。 3表示没有任何限制 ...
分类:
其他好文 时间:
2019-02-17 22:07:50
阅读次数:
178