用dp[pos][val][cnt]表示状态,pos是数位,val是当前统计的数字,cnt是目前统计的目标数字的出现次数

注意状态的转移过程,统计数字0时前导0的影响。

  1. 1 #include<cstdio>
  2. 2 #include<cstring>
  3. 3 #include<algorithm>
  4. 4 using namespace std;
  5. 5 typedef long long LL;
  6. 6 int dig[15],pos;
  7. 7 LL dp[15][10][15],ans[2][10];
  8. 8
  9. 9 LL dfs(int pos,int val,int cnt,bool lead,bool limit){
  10. 10 if(pos==0) return cnt;
  11. 11 if(!limit&&!lead&&dp[pos][val][cnt]!=-1) return dp[pos][val][cnt];
  12. 12 int len=limit?dig[pos]:9,t=0;
  13. 13 LL ans=0;
  14. 14 for(int i=0;i<=len;i++){
  15. 15 if(val!=i) t=cnt;
  16. 16 else{
  17. 17 if(lead&&val==0) t=0;
  18. 18 else t=cnt+1;
  19. 19 }
  20. 20 ans+=dfs(pos-1,val,t,lead&&i==0,limit&&i==len);
  21. 21 }
  22. 22 if(!limit&&!lead) dp[pos][val][cnt]=ans;
  23. 23 return ans;
  24. 24 }
  25. 25
  26. 26 void solve(LL x,int idx){
  27. 27 if(x==0) return ;
  28. 28 int pos=0;
  29. 29 while(x){
  30. 30 dig[++pos]=x%10;
  31. 31 x/=10;
  32. 32 }
  33. 33 for(int i=0;i<10;i++)//对每一个数字分别求解
  34. 34 ans[idx][i]=dfs(pos,i,0,1,1);
  35. 35 }
  36. 36
  37. 37 int main(){
  38. 38 memset(dp,-1,sizeof(dp));
  39. 39 LL a,b;
  40. 40 while(~scanf("%lld%lld",&a,&b),a+b){
  41. 41 if(a>b) swap(a,b);
  42. 42 memset(ans,0,sizeof(ans));
  43. 43 solve(a-1,0),solve(b,1);
  44. 44 for(int i=0;i<10;i++)
  45. 45 printf("%lld ",ans[1][i]-ans[0][i]);
  46. 46 printf("\n");
  47. 47 }
  48. 48 return 0;
  49. 49 }

POJ2282 The Counting Problem(数位DP)的更多相关文章

  1. 『The Counting Problem 数位dp』

    The Counting Problem Description 求 [L,R]内每个数码出现的次数. Input Format 若干行,一行两个正整数 L 和 R. 最后一行 L=R=0,表示输入结 ...

  2. UVA - 1640 The Counting Problem (数位dp)

    题意:统计l-r中每种数字出现的次数 很明显的数位dp问题,虽然有更简洁的做法但某人已经习惯了数位dp的风格所以还是选择扬长避短吧(说白了就是菜啊) 从高位向低位走,设状态$(u,lim,ze)$表示 ...

  3. POJ2282:The Counting Problem(数位DP)

    Description Given two integers a and b, we write the numbers between a and b, inclusive, in a list. ...

  4. hdu 5106 Bits Problem(数位dp)

    题目链接:hdu 5106 Bits Problem 题目大意:给定n和r,要求算出[0,r)之间全部n-onebit数的和. 解题思路:数位dp,一个ct表示个数,dp表示和,然后就剩下普通的数位d ...

  5. hiho1259 A Math Problem (数位dp)

    题目链接:http://hihocoder.com/problemset/problem/1259 题目大意:g(t)=(f(i)%k=t)的f(i)的个数 求所有的(0-k-1)的g(i)的异或总值 ...

  6. 哈尔滨工程大学ACM预热赛 G题 A hard problem(数位dp)

    链接:https://ac.nowcoder.com/acm/contest/554/G Now we have a function f(x): int f ( int x ) {     if ( ...

  7. POJ2282 The Counting Problem

    题意 Language:DefaultEspañol The Counting Problem Time Limit: 3000MS Memory Limit: 65536K Total Submis ...

  8. nowcoder A hard problem /// 数位DP

    题目大意: 称一个数x的各个数位之和为f(x) 求区间L R之间 有多少个数x%f(x)==0 #include <bits/stdc++.h> using namespace std; ...

  9. Gym - 102040B Counting Inversion (数位dp)

    题意:求[a,b]区间内的数字中正序对的个数. 具体思路参考: https://blog.csdn.net/weixin_43135318/article/details/88061396 https ...

随机推荐

  1. 解决线程安全问题_同步方法和解决线程安全问题_Lock锁

    解决线程安全问题_同步方法 package com.yang.Test.ThreadStudy; import lombok.SneakyThrows; /** * 卖票案例出现了线程安全的问题 * ...

  2. Graph Theory の brief introduction

    一. 图的概念   1.定义   某类具体事物(顶点)和这些事物之间的联系(边),由顶点(vertex)和边(edge)组成, 顶点的集合V,边的集合E,图记为G = (V,E) 2.分类     1 ...

  3. 基于ABP和Magicodes实现Excel导出操作

      前端使用的vue-element-admin框架,后端使用ABP框架,Excel导出使用的Magicodes.IE.Excel.Abp库.Excel导入和导出操作几乎一样,不再介绍.文本主要介绍E ...

  4. RGBColor类定义

    这个类主要是颜色操作,操作详细原理如下图: 类声明: class RGBColor { public: RGBColor(); ~RGBColor(); RGBColor(ldouble a); RG ...

  5. Python 工匠:一个关于模块的小故事

    前言 模块(Module)是我们用来组织 Python 代码的基本单位.很多功能强大的复杂站点,都由成百上千个独立模块共同组成. 虽然模块有着不可替代的用处,但它有时也会给我们带来麻烦.比如,当你接手 ...

  6. 国家都给NISP证书的补贴了!关于NISP考试的政策有哪些?

    NISP证书由中国信息安全测评中心依据中编办赋予"信息安全服务和信息安全专业人员的能力评估与资质审核"的职能而推出的证书,是中国信息安全测评中心代表国家实施的信息安全人员能力评定证 ...

  7. Python自学教程8-数据类型有哪些注意事项

    不知不觉,python自学教程已经更新到第八篇了,再有几篇,基本的语法就介绍完了. 今天来总结一下数据类型有哪些需要注意的地方. 元组注意事项 元组是另一种经常使用到的数据类型,看上去和列表差不多.它 ...

  8. HCNP Routing&Switching之MAC地址防漂移

    前文我们了解了二层端口安全技术相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/16631222.html:今天我们来聊一聊MAC地址防漂移技术: 首先我 ...

  9. java基础学习:java中的反射

    一.什么是java反射 什么是 java 的反射? 说到反射,写这篇文章时,我突然想到了人的"反省",反省是什么?吾一日三省吾身,一般就是反思自身,今天做了哪些对或错的事情. ja ...

  10. spark 读取Geomesa(Hbase)数据

    package com.grady.geomesa import org.apache.hadoop.conf.Configuration import org.apache.spark.SparkC ...