zoukankan      html  css  js  c++  java
  • P2602 [ZJOI2010]数字计数 数位dp

      

    题目描述

    给定两个正整数a和b,求在[a,b]中的所有整数中,每个数码(digit)各出现了多少次。

    输入输出格式

    输入格式:

    输入文件中仅包含一行两个整数a、b,含义如上所述。

    输出格式:

    输出文件中包含一行10个整数,分别表示0-9在[a,b]中出现了多少次。

    输入输出样例

    输入样例#1: 复制
    1 99
    
    输出样例#1: 复制
    9 20 20 20 20 20 20 20 20 20


    乍一看很简单
    一开始想像吉哥那题想用node 来dfs 
    想复杂了
    其实可以每次针对一个数 然后9次数位即可

    一开始还算成有几个数满足条件QAQ
    注意前导零的情况
    #include<bits/stdc++.h>
    using namespace std;
    //input by bxd
    #define rep(i,a,b) for(int i=(a);i<=(b);i++)
    #define repp(i,a,b) for(int i=(a);i>=(b);--i)
    #define RI(n) scanf("%d",&(n))
    #define RII(n,m) scanf("%d%d",&n,&m)
    #define RIII(n,m,k) scanf("%d%d%d",&n,&m,&k)
    #define RS(s) scanf("%s",s);
    #define ll long long
    #define pb push_back
    #define inf 0x3f3f3f3f
    #define CLR(A,v)  memset(A,v,sizeof A)
    //////////////////////////////////
    const int N=30;
    ll dp[N][20][15];
    ll a[N];
    
    ll dfs(int pos,int pre,bool lead,bool limit,int flag)
    {
        if(!pos)return pre;
    
        if(!limit&&!lead&&dp[pos][pre][flag]!=-1)return dp[pos][pre][flag];
        ll ans=0;
        int up=limit?a[pos]:9;
        rep(i,0,up)
        {
            ans+=dfs(pos-1,pre+((i==flag)&&(i||!lead)) ,lead&&i==0,limit&&i==a[pos],flag);
        }
    
        if(!limit&&!lead)dp[pos][pre][flag]=ans;
        return ans;
    }
    ll solve(ll x,int flag)
    {
        int pos=0;
        while(x)
        {
            a[++pos]=x%10;
            x/=10;
        }
        return dfs(pos,0,true,true,flag);
    }
    ll x,y;
    int main()
    {
        CLR(dp,-1);
        cin>>x>>y;
    
        rep(i,0,9)
        printf("%lld ",solve(y,i)-solve(x-1,i));
    
        return 0;
    }
    View Code






  • 相关阅读:
    TWaver HTML5 (2D)--基本概念
    浏览器编码的函数简介escape(),encodeURI(),encodeURIComponent()
    pom.xml
    注解式控制器简介
    Controller接口
    WebContentGenerator
    Controller简介
    DispatcherServlet中使用的特殊的Bean
    DispatcherServlet默认配置
    DispatcherServlet
  • 原文地址:https://www.cnblogs.com/bxd123/p/10975516.html
Copyright © 2011-2022 走看看