![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数位DP
数位DP相关题目
Lesords
这个作者很懒,什么都没留下…
展开
-
洛谷 P2602 [ZJOI2010]数字计数 (题解+代码)
题目传送门:题解: 数位dp对于每个数(0~9)进行一次数位dp由于 前面的数码出现的次数 会影响到最后结果所以将 前面的数码出现的次数 设为dp的第二维状态然后记录对应结果,输出相减值即为答案代码及注释如下:#include<iostream>#include<cstring>#include<algorithm>#define ll long longusing namespace std;ll a[20],dp[20][20],ans[3][原创 2021-08-06 21:04:28 · 496 阅读 · 0 评论 -
杭电 4734 F(x) (题解+代码)
题目传送门:https://acm.hdu.edu.cn/showproblem.php?pid=4734题解: 数位dp预处理所有二进制位对应的十进制值然后在数位dp过程中,添加一个当前函数值的参数接着以 当前位置到最低位的最大剩余函数值 为dp第二维状态(第一维是位置)即 要求值all - 当前值sum因为sum为 最高位到前一个位置 的值,所以不便做状态!!!如果当前函数值超过要求值,直接返回0!!!上面文字描述的可能不是很好,所以具体的看下代码吧代码及注释如下:#include&原创 2021-08-06 20:53:27 · 100 阅读 · 0 评论 -
洛谷 P2657 [SCOI2009] windy 数 (题解+代码)
题目传送门:https://www.luogu.com.cn/problem/P2657题解: 数位dp计算给定数字所有数位上的值然后从高位到低位暴力枚举所有的情况当前一个位置上限时,当前最大值为 对应数位 的值跳过不满足条件的情况由于两个数字差需要为2,但是当前面都为0时当前位置可以从0开始遍历,可以 转换为前一个数字为-2(与0差值刚好为2)!!!利用 pos,pre 来记录状态,由于pre有负数情况,所以需+3记录非受限的情况(非受限情况更多)代码及注释如下:#include&l原创 2021-08-06 20:35:59 · 180 阅读 · 0 评论 -
杭电 2089 不要62 (数位dp做法)(题解+代码)
题目传送门:https://acm.hdu.edu.cn/showproblem.php?pid=2089题解: 数位dp (当然本题也可以直接打表求解,主要为了练习数位dp)简单说下数位dp的做法:首先计算给定值的所有数位上的值然后从高位开始暴力枚举每个位置上的值判断前一个位置是否受限,然后来确定当前位置值的范围跳过不符合条件的情况然后记录对应状态的数量(记忆化搜索)由于遍历过程中,不受限的情况更多,所以记录的时候选择不受限的不受限的情况和受限情况的值不一致!!!代码及注释如下:#i原创 2021-08-06 20:25:50 · 130 阅读 · 0 评论