收藏 分享(赏)

总结数位DP算法.doc

上传人:精品资料 文档编号:9240845 上传时间:2019-07-30 格式:DOC 页数:8 大小:34.19KB
下载 相关 举报
总结数位DP算法.doc_第1页
第1页 / 共8页
总结数位DP算法.doc_第2页
第2页 / 共8页
总结数位DP算法.doc_第3页
第3页 / 共8页
总结数位DP算法.doc_第4页
第4页 / 共8页
总结数位DP算法.doc_第5页
第5页 / 共8页
点击查看更多>>
资源描述

1、数位 dp 是一种计数用的 dp,一般就是要统计一个区间 le,ri内满足一些条件数的个数。比如,1,10000 中统计不含有 4 的数 。所谓数位 dp,字面意思就是在数位上进行 dp 咯。就是对数字每一位每一位递推此类题目最基本的暴力方法:1. for(int i=le;i 2. #include 3. #include 4. #include 5. using namespace std; 6. int d1010,digit10; 7. /dij 表示有 i 位数字,且第一位是 j 的数字的 满足题意的数量 8. void init() 9. 10. d00=1; 11. for(in

2、t i=1;i=1;i-) 27. for(int j=0;jnm,n+m) 41. coutsolve(m+1)-solve(n)endl;/由于要找n,m,而 solve 函数找的范围为n,所以传参的时候应该特别注意 42. return 0; 43. 假设一个数 3229得出00000999 的个数10001999 的个数20002999 的个数000099 的个数100199 的个数0099 的个数1019 的个数08 的个数累加就是答案了所以该区间是0,n) 是取不到的 n 的,注意计算的时候要加一个 1下面是一些题目:HDU 2089 不要 62 和 4HDU 3555 含 49

3、的数HDU 3652 含 13 且可以被 13 整除codeforces 55d A 一个数字可以被它所有非零数整除的个数POJ 3252 Round Numbers HDU 4734 F(x)HDU 3709 Balanced NumberHYSBZ 1799 self 同类分布URAL 1057 Amount of Degrees *HDU 4507 吉哥系列故事 恨 7 不成妻 *总结:可能要用到的数位 DP 的题目类型:11018,求某区间(很大),有特定要求的数字的个数如求 mod,求和,可以整除各位数,不出现某些数.框架:int DFS(int pos,) /DFS 一位一位放数字,求出答案,函数的参数保存题目要求的状态int solve(int n) /把 n 一位一位拆分,求出1,n 的符合要求的值难点:定义好状态!1.dp 状态要找好,不要出现状态重叠现象,注意前导 0 有没有影响2.题目有求和 sum,可能会很大,但可以转化为保存 sum 对一个数求 mod 的值3.有时候 dp 状态定义不好可能要求每次 DFS 都要 memset 一下,换换思路想想通用的状态定义,如 sum 从 加法改为减法

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报