[DP] 数位DP
本文主要内容:数位DP例题
数位DP
主要有两种方法,填数法和记搜。这里主要研究记搜的实现;
模板
相比于填数法,记搜的优点在于有固定的模板,实现较容易;
缺点在于需要很多
下面通过几道例题来了解记搜模板;
一 数
设记搜各参数如下:
long long dfs(int x, int gcd, bool limit, int st)
long long dfs(int x, int gcd, bool limit, int st) {
if (x > cnt) return st % gcd == 0;
if (!limit && f[cnt - x + 1][vis[gcd]][st] != -1) return f[cnt - x + 1][vis[gcd]][st];
int res = limit ? a[cnt - x + 1] : 9; //判断现在的限制;
long long ret = 0;
for (register int i = 0; i <= res; i++) {
if (i == 0) ret += dfs(x + 1, gcd, limit && i == res, st * 10 % mod); //特判0;
else ret += dfs(x + 1, gcd * i / __gcd(gcd, i), limit && i == res, (st * 10 + i) % mod);
}
return limit ? ret : f[cnt - x + 1][vis[gcd]][st] = ret;
}
也是水了一篇
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话