数位 DP
数位
1|0[ZJOI2010] 数字计数
1|1题目描述
给定两个正整数
- 保证
。
1|2求解策略
第一种方法 - 递推法
定义
- 一位数
~ ,每种数字只有 个 - 两位数
~ ,每种数字有 个,这里是 而不是 ,实际上是不合法的,但是先按照统一处理,到后面会减去 - 三位数
~ ,每种数字有 个
那么
= 。以数字 为例,计算 的时候, 在个位上出现了 次,即 。那么十位出现了 次,即 。以此类推即可 ,从 个 递增到 个 ,所有的字符共出现了 次, ~ 每个数字出现了 次
那么考虑如何实现,我们以
- 对于普通情况,也就是符合
~ 的情况,先拆分成 ~ , ~ , ~ ,这些的后两位是符合普通情况的,我们直接使用 统计 - 对于最高位,我们需要特殊判断,首先看
~ 的这些数字,他们都对应着所有的 ~ 这 个数字,所以对于这些最高位,都有 。对于 来说,对应的只有 ~ 这 个,特殊处理即可,最后我们要把最高位为 的处理掉,也就是
第二种方法 - 记忆化搜索
定义
表示最后 位的范围是 ~ ,前面 的个数为 时 的总个数,例如 表示区间 ~ 内 的个数为 个 表示是否有前导零 表示是否有最高位限制,即若计算最高位 开始的数字,有数位限制
2|0求出n之前的所有数满足位数和整除当前数
见题:E - Digit Sum Divisible (atcoder.jp)
P4127 [AHOI2009] 同类分布 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
考虑数位动规,设方程
那么状态转移方程就是:对于l=0,也就是当前位前面的没有被填满,那么我们在这个位置可以枚举到9
3|0[SCOI2009] windy 数
题目描述
不含前导零且相邻两个数字之差至少为
对于全部的测试点,保证
思路: 还是用计数类似统计,高位的可以通过低位计算过的结果来计算。定义
代码:
__EOF__

本文链接:https://www.cnblogs.com/o-Sakurajimamai-o/p/18313002.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
2023-07-20 树状数组
2023-07-20 #885