借鉴:http://www.cnblogs.com/xz816111/p/4809913.html

//    pos    = 当前处理的位置(一般从高位到低位)
//    pre    = 上一个位的数字(更高的那一位)
//    status = 要达到的状态,如果为1则可以认为找到了答案,到时候用来返回,
//            给计数器+1。
//    limit  = 是否受限,也即当前处理这位能否随便取值。如567,当前处理6这位,
//            如果前面取的是4,则当前这位可以取0-9。如果前面取的5,那么当前
//            这位就不能随便取,不然会超出这个数的范围,所以如果前面取5的
//            话此时的limit=1,也就是说当前只可以取0-6。
//
//    用DP数组保存这三个状态是因为往后转移的时候会遇到很多重复的情况。
int    dfs(int pos,int pre,int status,int limit)
{//已结搜到尽头,返回"是否找到了答案"这个状态。if(pos < 1)return    status;//DP里保存的是完整的,也即不受限的答案,所以如果满足的话,可以直接返回。if(!limit && DP[pos][pre][status] != -1)return    DP[pos][pre][status];int    end = limit ? DIG[pos] : 9;int    ret = 0;//往下搜的状态表示的很巧妙,status用||是因为如果前面找到了答案那么后面//还有没有答案都无所谓了。而limti用&&是因为只有前面受限、当前受限才能//推出下一步也受限,比如567,如果是46X的情况,虽然6已经到尽头,但是后面的//个位仍然可以随便取,因为百位没受限,所以如果个位要受限,那么前面必须是56。////这里用"不要49"一题来做例子。for(int i = 0;i <= end;i ++)ret += dfs(pos - 1,i,status || (pre == 4 && i == 9),limit && (i == end));//DP里保存完整的、取到尽头的数据if(!limit)DP[pos][pre][status] = ret;return    ret;
}

转载于:https://www.cnblogs.com/wuwangchuxin0924/p/5753916.html

数位DP按位枚举模板相关推荐

  1. 数位dp从会打模板到不会打模板

    打了几个数位$dp$,发现自己除了会打模板之外没有任何长进,遇到非模板题依然什么都不会 那么接下来这篇文章将介绍如何打模板(滑稽) 假设我们要处理$l----r$ 采用记忆化搜索的方式,枚举$< ...

  2. 数位dp的概念和模板

    基础篇 数位dp是一种计数用的dp,一般就是要统计一个区间[le,ri]内满足一些条件数的个数.所谓数位dp,字面意思就是在数位上进行dp咯.数位还算是比较好听的名字,数位的含义:一个数有个位.十位. ...

  3. 数位 dp 相邻位数字差值的绝对值不能超过 2_干货来了!13种行测数字推理技巧总结...

    数学除了公式要记忆,解题技巧同样需要"记忆"所谓的解题技巧来源于实战,运用于实战 它是在通过大量做题.充分理解和把握命题规律的基础上形成的解题方法论今天陕西京佳教育为大家盘点13种 ...

  4. 数位 dp 相邻位数字差值的绝对值不能超过 2_维懂百科——绝对值编码器的“绝对式”的定义...

    什么是绝对值编码器的"绝对式"的定义 旋转编码器是工业中重要的机械位置角度.长度.速度反馈并参与控制的传感器,旋转编码器分增量值编码器.绝对值编码器.绝对值多圈编码器. 从外部接收 ...

  5. 数位 dp 相邻位数字差值的绝对值不能超过 2_XMZD-102 数字温度仪

    XMZD-102 数字温度仪 单回路数显仪表是采用微处理器进行数字运算,可对各种非线性信号进行高精度的线性矫正的仪器. 概述 单回路数显仪表显示控制仪适用于各种温度.压力.液位.长度等的测量控制.采用 ...

  6. 数位 dp 相邻位数字差值的绝对值不能超过 2_贵州专注WIKA数字压力表品牌推荐...

    贵州专注WIKA数字压力表品牌推荐 k52gh264 贵州专注WIKA数字压力表品牌推荐 校验器漏油或者是油杯针型阀不光滑导致密封性不好,也可能是弹簧管有裂缝...对标准器的误差要求检定精密压力表时标 ...

  7. 花神的数论题(这题...哎。数位dp咋就这么 not naive 呢)

    题意简介 没什么好说,就是让你求出 1 ~ n 之间每个数转化为二进制后 '1' 的个数,然后乘起来输出积 题目分析 emmmm.... 两种解法(同是 $O(\log^2 N)$ 的算法,组合数效率 ...

  8. bzoj3209 花神的数论题——数位dp

    题目大意: 花神的题目是这样的 设 sum(i) 表示 i 的二进制表示中 1 的个数.给出一个正整数 N ,花神要问你 派(Sum(i)),也就是 sum(1)-sum(N) 的乘积. 要对1000 ...

  9. HDU 4507 吉哥系列故事――恨7不成妻 (平方拆解 + *数位DP 总结)

    单身!  依然单身!  吉哥依然单身!  DS级码农吉哥依然单身!  所以,他生平最恨情人节,不管是214还是77,他都讨厌!    吉哥观察了214和77这两个数,发现:  2+1+4=7  7+7 ...

最新文章

  1. 不同的设计模式的特点总结
  2. 一站式学习Wireshark(一):Wireshark基本用法
  3. Postfix 配置参数速查
  4. 人生不能过分认真(较真),但必须认真!
  5. java hasfocus_Java KeyEvent.hasNoModifiers方法代碼示例
  6. python--装饰器(附偏函数、断言)
  7. 字符串系统函数strstr strrchr [5.3有版本不同]
  8. Mac(OS X)安装、配置并使用MySQL数据库
  9. Spring面试,IoC和AOP的理解
  10. 计算机24点游戏几把,24点游戏规则和解题方法
  11. RPC系列:基本概念
  12. CentOS7下安装达梦数据库的步骤
  13. 研磨设计模式之简单工厂模式
  14. 面试官到底想看什么样的简历?
  15. 图像匹配 | 论文与方法整理
  16. 麦克风声源定位原理_关于基于麦克风阵列的声源被动定位系统的设计
  17. Bandicam录屏
  18. java继承计算不同图形面积_第五章-子类与继承-实验2(图形面积的和)
  19. html table相同值合并单元格,ElementUI表格列相同值自动合并单元格( 单列 )
  20. 高效能人士的七个习惯 读书笔记

热门文章

  1. JAVA中运行看不见窗口_eclipse中已经把窗口设置为可视,为什么运行 时还是看不到窗口?...
  2. java更改reader字体颜色,Java 修改 文件内容 and BufferedReader 乱码问题
  3. Perl 字符串截取函数substr
  4. 五种 JSP页面跳转方法详解
  5. 数据库连接池php-cp介绍
  6. 利用Arduino对路由器进行调试,居然这么简单!
  7. 风投盯上阿里云开发者大会寻下一个阿里
  8. 【EASYDOM系列教程】之属性操作
  9. Ubuntu 16.04 LTS安装Docker并使用加速器
  10. 注意啦,Struts 2.1.6跟sitemesh-2.4.1不兼容