随笔分类 - 动态规划 - 数位dp
摘要:数位 DP. 题意:给定 $n \leqslant 10^{700}$,求 $1$ 到 $n$ 中每个数在各数位排序后得到的数的和. 这道题从整体上看上去貌似不太可做,不妨从每一位开始考虑. 比如说我们可以考虑第 $i$ 位为 $k$ 的数目,然后乘上 $10^i$ 后就是这一位的贡献了. 这么做的
阅读全文
摘要:这道题中我们要考虑这么几件事情: 1.前 2 个数是什么.2.是否已经合法了. 3.是否顶上界.4.是否有4/8 那么设状态的时候就是 $f[num_{i-1}][num_{i-2}][state][l][4][8]$ 记忆化搜索的时候如果搜过该状态且补丁上界就返回. 然后转移的时候注意:1.是否新
阅读全文
摘要:这道题细节并不算太多,但是求方案数的时候一定不要乱取模! 如果非要取模的话也要遵循欧拉定理. code: #include <bits/stdc++.h> #define N 57 #define ll long long #define mod 10000007 #define setIO(s)
阅读全文
摘要:数位dp. 细节真的很多. 1. 考虑清楚每个数的贡献. 2. 0 特殊考虑. code: #include <bits/stdc++.h> #define ll long long #define setIO(s) freopen(s".in","r",stdin) using namespace
阅读全文
摘要:基本上把数位dp那一套给忘了,今天重学一遍. 感觉采用递推的方式还是蛮方便的,然后要注意几个细节: 1. 通常算 f(x+1)=calc(1,x),这样更方便算一些. 2. 每种小于最大长度的所有结果都要累加. 3. 很多时候不要忘记 0 的贡献. 4. 要特判前缀合不合法. code: #incl
阅读全文

浙公网安备 33010602011771号