zoukankan      html  css  js  c++  java
  • 数位DP

    数位DP基本都是这个套路吧

    dfs(数的最后若干位,各种限制条件,当前第几位)
        if 最后一位
            return 各种限制条件下的返回值
        局部变量 ct=当前位的数字
        局部变量 sum=0;
        for i=0 to ct-1
            sum+=当前位取i时一定无限制的合法状态数
            sum+=当前位取i时满足当前限制的合法状态数
        根据ct更新限制条件 不再满足则return sum
        return sum+dfs(当前位后的若干位,更新后的限制条件,下一位)
    
    slv(当前数)
        if(只有一位) return 对应的贡献
        局部变量 ct;
        for ct=可能最高位 to 1
            if 当前位有数字 break
        局部变量 nw=当前位数字
        局部变量 sum=0
        for i=1 to nw-1
            sum+=当前位取i后合法情况任意取的贡献
        for i=1 to ct-1
            for j=1 to 9
                sum+=第i位取j后合法情况任意取的贡献
        sum+=dfs(去掉第一位后的若干位,限制条件,第二位)
        return sum
    
    main
        预处理当前位取i的各种条件各种限制的贡献
        读入 L R
        --L
        输出 slv(R)-slv(L)
        return 0
    
  • 相关阅读:
    C语言文件操作函数大全
    iOS
    HDU 5042 GCD pair 预处理+二分 分段
    swoole新手教程01-环境搭建及扩展安装
    Cocos2d-X中的Slider控件
    CSS之BFC
    代理server的概要知识
    C#比較对象的相等性
    Effective C++ 35,36,37
    oled屏幕
  • 原文地址:https://www.cnblogs.com/AH2002/p/10054804.html
Copyright © 2011-2022 走看看